如果我从 table 中删除一条记录,它会在许多其他地方被删除
If I delete a record from a table it is deleted at many other places
我正在处理之前团队构建的数据库。我必须从 table 中删除某些记录(示例如下所示)。
DELETE FROM table WHERE id = 5541
在执行此过程时,其他 table 中具有相同 ID 的一些记录将被删除。有人可以帮助解决这个问题吗?
在SQL 服务器中,有一个名为ON DELETE CASCADE
的语句,如果记录从父table 中删除,则从子table 中删除该记录。这可以使用 ALTER STATEMENT
进行设置,如下所示。要删除级联,请尝试将子项 table 改回默认值。默认为 NO CASCADING
.
ALTER TABLE ChildTable
ADD CONSTRAINT FKey
FOREIGN KEY (col1, col2, ... coln)
REFERENCES ParentTable (Pcol1, Pcol2, ... Pcoln)
ON DELETE CASCADE
还有UPDATE CASCADE
如果父table更新时子table中的数据应该更新。
您的数据库肯定包含带级联删除的外键约束 see docs。
您也许可以删除这些外键,但是当然,删除一些行会留下不一致的数据。
另一种可能性是只删除级联删除。但是当然,您将无法删除任何被其他表中的记录引用的行,因为 SQL 服务器将确保您的数据的一致性。
我正在处理之前团队构建的数据库。我必须从 table 中删除某些记录(示例如下所示)。
DELETE FROM table WHERE id = 5541
在执行此过程时,其他 table 中具有相同 ID 的一些记录将被删除。有人可以帮助解决这个问题吗?
在SQL 服务器中,有一个名为ON DELETE CASCADE
的语句,如果记录从父table 中删除,则从子table 中删除该记录。这可以使用 ALTER STATEMENT
进行设置,如下所示。要删除级联,请尝试将子项 table 改回默认值。默认为 NO CASCADING
.
ALTER TABLE ChildTable
ADD CONSTRAINT FKey
FOREIGN KEY (col1, col2, ... coln)
REFERENCES ParentTable (Pcol1, Pcol2, ... Pcoln)
ON DELETE CASCADE
还有UPDATE CASCADE
如果父table更新时子table中的数据应该更新。
您的数据库肯定包含带级联删除的外键约束 see docs。
您也许可以删除这些外键,但是当然,删除一些行会留下不一致的数据。
另一种可能性是只删除级联删除。但是当然,您将无法删除任何被其他表中的记录引用的行,因为 SQL 服务器将确保您的数据的一致性。