我要删除与另一个表(子)有关系的SQL Server表(父)中的数据.
我尝试了基本的删除查询.但它不起作用(我知道它不会).
DELETE FROM table WHERE ...
Run Code Online (Sandbox Code Playgroud)
它返回以下错误
DELETE语句与REFERENCE约束冲突...
我需要保留表的架构.我知道我只需要在查询中添加一些单词,我之前就已经这样做了,但我无法回想起来.
Chr*_*tow 41
您可以在删除之前和之后禁用并重新启用外键约束:
alter table MyOtherTable nocheck constraint all
delete from MyTable
alter table MyOtherTable check constraint all
Run Code Online (Sandbox Code Playgroud)
Ada*_*ger 33
您需要手动删除子项.的<condition>是两个查询相同.
DELETE FROM child
FROM cTable AS child
INNER JOIN table AS parent ON child.ParentId = parent.ParentId
WHERE <condition>;
DELETE FROM parent
FROM table AS parent
WHERE <condition>;
Run Code Online (Sandbox Code Playgroud)
在这里,您要为"Child"表添加外键
ALTER TABLE child
ADD FOREIGN KEY (P_Id)
REFERENCES parent(P_Id)
ON DELETE CASCADE
ON UPDATE CASCADE;
Run Code Online (Sandbox Code Playgroud)
之后如果您在"父"表上进行DELETE查询,就像这样
DELETE FROM parent WHERE .....
Run Code Online (Sandbox Code Playgroud)
由于子项具有DELETE CASCADE对父项的引用,因此"Child"行也将被删除!和"父母"一起.
| 归档时间: |
|
| 查看次数: |
151680 次 |
| 最近记录: |