关于嵌套触发
我有两个表:eq表和server表
eq表有num(关键字)、state等几个字段
server表有id(关键字)、num(非关键字)、state、acceptdate等几个字段
我在server表设置了一个UPDATE触发器,代码如下:
CREATE TRIGGER [serupdate] ON dbo.server_t
FOR UPDATE
AS
declare @xh int,@bh char(10),@accdate datetime,@st nchar(10)
select @bh=num from updated
select @accdate=max(acceptdate) from server_t where num=@bh
select @st=state from server_t where num=@bh and acceptdate=@accdate
update equipment set state=@st where num=@bh and state!=@st
作用是当server表里的记录更新的时候,保存被更新记录的num字段值到bh里,
找出表中num字段等于此值并且acceptdate为最大的那条的state值。用此
state值更新eq表中num字段等于bh的那条记录的state值。
现在我希望建立一个eq表和server表之间的关系:
主键为eq.num,外键为server.num。目的是对server表的num字段进行级联更新
(这也是server表的num字段的唯一更新方式,我的前台程序不会提供单独更新
server表的num字段的途径)。但是在保存时报错:
“'eq' 表成功保存
'server' 表
- 不能创建关系 'FK_server_eq'。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]将 FOREIGN KEY
约束 'FK_server_eq' 引入表 'server' 中将导致循环或多重级联路径。
请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY
约束。[Microsoft][ODBC SQL Server Driver][SQL Server]未能创建约束。
请参阅前面的错误信息。”
我知道这肯定是嵌套触发引起的,(我的“服务器设置->允许激发会激发其它触发
器”选项是设置的允许嵌套。)请问高手该怎样解决,谢谢!!