sql >> Databáze >  >> RDS >> Sqlserver

Jak odstranit řádky v tabulkách, které obsahují cizí klíče do jiných tabulek

Nejprve jako jednorázové cvičení pro čištění dat odstraňte osamocené řádky, např.

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

Za druhé, jako jednorázové cvičení pro změnu schématu přidejte příkaz ON DELETE CASCADE referenční akce na cizí klíč na referenční tabulce, např.

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;

Poté budou řádky v referenčních tabulkách navždy automaticky odstraněny, když bude odstraněn jejich odkazovaný řádek.



  1. vložit dotaz pomocí přijímací smyčky foreach Uncaught Error:Volání členské funkce execute() na boolean

  2. Jak používat LIKE pro vyhledávání v mysql s JOIN a ORDER BY podle počtu nejvíce řádků/hlasů v tabulce hlasování?

  3. Tabulka hodnotná funkce Killing My Query Performance

  4. Je možné mít v MySQL index založený na funkcích?