Comment écrit-on un DELETE CASCADE pour postgres?

Je suis manuellement la construction d'un DELETE CASCADE de déclaration pour postgres.

J'ai une "transaction" et une "tranche" de la table, liés comme indiqué ci-dessous:

    Table "public.slice"
  Column  | Type | Modifiers 
----------+------+-----------
 id       | text | not null
 name     | text | 
Referenced by:
    TABLE "transaction" CONSTRAINT "transaction_slice_id_fkey" FOREIGN KEY (slice_id) REFERENCES slice(id)
 Table "public.transaction"
  Column  | Type | Modifiers 
----------+------+-----------
 id       | text | not null
 slice_id | text | 
Referenced by:
    TABLE "classification_item" CONSTRAINT "classification_item_transaction_id_fkey" FOREIGN KEY (transaction_id) REFERENCES transaction(id)
Table "public.classification_item"
     Column     | Type | Modifiers 
----------------+------+-----------
 id             | text | not null
 transaction_id | text | 
Foreign-key constraints:
    "classification_item_transaction_id_fkey" FOREIGN KEY (transaction_id) REFERENCES transaction(id)

Dire que je veux supprimer toutes les transactions et classification_items référencé par la tranche dont le nom est "my_slice'. Que dois-je écrire?

=# delete from classification_item where transaction_id= #...? 
=# delete from transaction where slice_id= #...? 
=# delete from slice where name='my_slice';
  • Suggestion: Améliorer le bloc de code décrivant la structure de la table. (J'ai essayé d'améliorer ce avec un edit, mais ils l'ont rejeté, il ...) Avec une entité-relation diagramme, cela permettrait d'économiser beaucoup de temps à comprendre la structure de la table. Sinon, il suffit d'utiliser une mise en forme cohérente, de raccourcir les lignes de la largeur de la colonne, et l'utilisation des espaces lignes de la structure du bloc. Les deux dernières lignes ("les contraintes de clé Étrangère") sont redondantes à l'un des "Référencé par" sections. Et dans l'intro, vous mentionnez que vous avez deux tables, mais vous avez trois.
InformationsquelleAutor AP257 | 2010-09-14