如果你有两张桌子,我们就说门和房子。
这些桌子是通过一个外键(门到房子)连接的。约束条件是一栋房子有2-10扇门。
在数据级别上执行此操作的最佳方法是什么?
发布于 2013-10-14 11:56:27
create table houses (id int primary key)
create table doors (
id int primary key,
house_id int references houses(id)
)
create trigger doorsCondition on doors
instead of insert
AS
declare @max int, @min int
select @max = max(i), @min = min(i) from (
select count(1) i from (
select house_id from doors where house_id = ANY (select house_id from inserted)
union all
select house_id from inserted) subquery
group by house_id) subQuery2
if (@max <= 10 and @min >= 2)
insert into doors select * from inserted
else
print 'The insert violates business constraint'
以及相应的删除触发器。您可能可以将它们合并为一个,但是在这个简单的场景中,我不确定它是否值得,所有的事情都考虑在内。
https://stackoverflow.com/questions/19231568
复制相似问题