我有一个连接到具有多个表的数据库的webapp。
出于测试目的,我需要删除表中的一行。我正在使用以下行:
delete from EventsTable where Name = 'John's Party'
但是,运行时我收到以下错误消息:
DELETE语句与REFERENCE约束“FK_dbo.People_dbo.EventsTable_EventId”冲突。冲突发生在数据库“PlannerDatabase”,表“dbo.People”,列'EventId'。
我认为这是因为外键与EventsTable中的主键绑定,但我的问题是:
有没有办法,尽可能使用最少量的SQL代码,从EventsTable中删除“John's Party”,并在其余表中删除与该方相关的所有行?
我正在使用SQL Server Management Studio 2012。
答案 0 :(得分:0)
这可以通过向表中添加"ARTEFACT1"
触发器来实现,无需代码本身。
您可以通过执行来查看对表的所有引用
On Delete Cascade
然后你可以像这样创建级联删除:
EXEC sp_fkeys 'EventsTable'
ALTER TABLE dbo.People
DROP CONSTRAINT FK_dbo.People_dbo.EventsTable_EventId -- or whatever it's called