sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man tar bort rader i tabeller som innehåller främmande nycklar till andra tabeller

Ta först bort de föräldralösa raderna som en engångsskrubbningsövning, t.ex.

DELETE 
  FROM ReferencingTable 
 WHERE NOT EXISTS (
                   SELECT * 
                     FROM MainTable AS T1
                    WHERE T1.pk_col_1 = ReferencingTable.pk_col_1
                  );

För det andra, som en engångsövning för schemaändring, lägg till ON DELETE CASCADE referensåtgärd till den främmande nyckeln på referenstabellen t.ex.

ALTER TABLE ReferencingTable DROP 
   CONSTRAINT fk__ReferencingTable__MainTable;

ALTER TABLE ReferencingTable ADD 
   CONSTRAINT fk__ReferencingTable__MainTable 
      FOREIGN KEY (pk_col_1)
      REFERENCES MainTable (pk_col_1)
      ON DELETE CASCADE;

Sedan, för alltid, rader i referenstabellerna automatiskt raderas när deras refererade rad raderas.



  1. initiala mysql med Windows api-funktion CreateProcessA

  2. MySQL - Välj senaste datum från en uppsättning av flera möjliga tidsstämplar?

  3. SQL Server:Extrahera tabellmetadata (beskrivning, fält och deras datatyper)

  4. få data från flera tabeller i MySQL med olika var-förhållanden