我有两张桌子
TableOne (TABLE_ONE_ID (pk), TABLE_TWO_ID (fk), ...(something else) )
TableTwo (TABLE_TWO_ID (pk), TABLE_ONE_ID (fk), ...(something else) )
Run Code Online (Sandbox Code Playgroud)
如何从这些表中删除记录?
PS我认为这是糟糕的设计,但这不是我的错,我没有权限更改数据库结构.我只需要知道如何从这些表中删除记录.
Jim*_*Jim 17
我不确定最好的方法,但我可能会这样做:
UPDATE TableOne SET TABLE_TWO_ID = null;
DELETE FROM TableTwo;
DELETE FROM TableOne;
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式禁用外键:
alter table TableOne disable constraint fk_table_two_id;
Run Code Online (Sandbox Code Playgroud)
之后,您应该能够删除行。
根据DaveCosta的评论,您可以推迟约束检查。这样,就可以在整个事务而不是每个单独的SQL语句中检查约束。例如:
begin transaction;
set constraints all deferred;
delete from TableTwo;
delete from TableOne;
commit transaction;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9052 次 |
| 最近记录: |