sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan sletter du rækker i tabeller, der indeholder fremmednøgler til andre tabeller

Først, som en engangs-data-scrubbing-øvelse, skal du slette de forældreløse rækker, f.eks.

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

For det andet, som en engangs skemaændringsøvelse, skal du tilføje ON DELETE CASCADE henvisningshandling til fremmednøglen på referencetabellen f.eks.

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;

Så for evigt vil rækker i referencetabellerne automatisk blive slettet, når deres referencerække slettes.



  1. Postgresql-begrænsning for at tjekke for ikke-ascii-tegn

  2. Brug af Geekbench 3 til at evaluere databaseserverens ydeevne

  3. Sådan inkorporerer du mysql i Jboss quickstart tutorial

  4. mysql brugervariabel tildeling med count(*)