2016-02-05 36 views
0

我創建了一個非常簡單的SQL腳本(如下所示),如果列名是特定值,它將刪除表中的行。刪除表中的行 - 最好的方法來刪除它影響的所有行?

DELETE FROM table_name 
WHERE some_column=some_value; 

然而,此表也進入數據在我的數據庫其他表:例如它的ID (Primary Key).

如何我也刪除其他表中的行?

+2

我認爲你正在尋找級聯的外鍵引用。您可以聲明引用,以便在使用它們的表中更新或刪除引用。 –

+0

謝謝,你有這個好的教程嗎? – java123999

+3

請不要交叉帖http://dba.stackexchange.com/questions/128395/deleting-a-row-in-table-best-way-to-also-delete-all-rows-it-affects http:// meta.stackexchange.com/questions/64068/is-cross-posting-a-question-on-multiple-stack-exchange-sites-permitted-if-the-qu –

回答

0

我會推薦一個存儲過程在數據庫中做你的刪除。您不僅可以按正確的約束順序執行刪除操作,還可以獲得無需授予對錶的刪除權限的額外好處 - 只需執行proc權限即可。

0

就像說@Gordon, 添加一個外鍵,您table_name並要求cascade_on_delete

DELETE table1, table2 FROM table1 INNER JOIN table2 ON table1.column=table2.column AND table1.column = someValue

...不知道如何正確synthax但將正常工作。

+1

Oracle不允許在一個語句中從多個表中刪除。 –