create table BB
(编号 varchar(20) not null PRIMARY KEY CLUSTERED ,
名称 varchar(20) UNIQUE NONCLUSTERED ,
数量 int
)
create table AA
(编号 varchar(20) not null PRIMARY KEY CLUSTERED REFERENCES BB (编号) ON DELETE CASCADE ON UPDATE CASCADE ,
供应商 varchar(20)
)1 约束只对删除BB表数据时AA表的可以同时删除
CREATE TRIGGER tr_AA_del ON dbo.AA
FOR delete
ASif exists( select 1 from BB where 编号 in (select 编号 from deleted))
print'warning'
2 用触发器
CREATE TRIGGER tr_AA_del ON dbo.AA
FOR delete
ASdelete BB where 编号 in (select 编号 from deleted)
但我还是不怎么明白你的回答我的问题是
1.怎样限制用户删除主键表的记录(或者提示用户,当外键表存在该记录的行时)
2.删除主键表的行的同时会不会删除外键表的记录,如果会,怎样让他不删除呢?
后台可以触发器里控制
CREATE TRIGGER tr_AA_del ON dbo.AA
FOR delete
ASif exists( select 1 from BB where 编号 in (select 编号 from deleted))
begin
print 'cannot delete'
rollback tran2
如果设置了级联更新,那么删除BB表中的记录时AA表的相应项会删除
反过来不会
end
后台可以触发器里控制
CREATE TRIGGER tr_AA_del ON dbo.AA
FOR delete
ASif exists( select 1 from BB where 编号 in (select 编号 from deleted))
begin
print 'cannot delete'
rollback tran2
如果设置了级联更新,那么删除BB表中的记录时AA表的相应项会删除
反过来不会
end