sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan skriver man en sletteregel på en visning?

Hvad du ser med regelproblemet er, at regelsystemet ikke håndterer dataene atomisk. Den første sletning udføres uanset rækkefølgen af ​​de to udsagn i DO INSTEAD-reglen. Den anden sætning udføres aldrig, fordi den række, som OLD.id henviser til, er blevet fjernet fra visningen. Du kan bruge en LEFT JOIN, men det hjælper dig ikke på grund af eksempeltabeldesignet (det kan fungere på dit faktiske databaseskema).

Det grundlæggende problem, som jeg ser det, er, at du behandler regelsystemet, som det var en udløser.

Din bedste mulighed er at bruge fremmednøgler og ON DELETE CASCADE i stedet for regler. Med dem ville dit eksempelskema også fungere:Du behøver kun slette, for at den overordnede tabel kan slippe af med alle børnene.



  1. Sådan fungerer RIGHT()-funktionen i MySQL

  2. RUC eller RUR?

  3. Hvordan dræber du alle nuværende forbindelser til en SQL Server 2005-database?

  4. Hvordan opretter jeg en tabel med begrænsninger, mens jeg trækker data fra en anden tabel