Sql 异常事务在触发器中结束。批处理已中止
你能帮我解决这个错误吗 事务在触发器中结束。批处理已中止 我的代码是:Sql 异常事务在触发器中结束。批处理已中止,sql,sql-server,Sql,Sql Server,你能帮我解决这个错误吗 事务在触发器中结束。批处理已中止 我的代码是: alter trigger t1 on Client after insert, update as begin if (exists (select cincli from inserted intersect select cincli from Client)) rollback transaction end 我不知道问题出
alter trigger t1
on Client
after insert, update
as
begin
if (exists (select cincli from inserted
intersect
select cincli from Client))
rollback transaction
end
我不知道问题出在哪里?正如我在评论中所说,不要使用
触发器检查是否存在重复值。考虑到您谈论的是ID,那么主键似乎是正确的选择:
ALTER TABLE t1 ADD CONSTRAINT PK_T1 PRIMARY KEY CLUSTERED (cincli);
如果cincli
不总是升序,您可能需要一个非聚集的
主键,而应该在总是升序的列上创建一个聚集索引。如果If
的计算结果为TRUE,则“问题”就出现了,因此交易被回滚。@Larnu在不知道您想要实现什么的情况下,您能帮我吗?我可以告诉你为什么会出错,如果不知道这是什么,我无法告诉你如何去做你想做的事情。@Larnu哈哈哈,我很抱歉我是sql的新手,我想如果我插入一个id,如果这个id存在,我的程序会回滚,我知道有多种方法可以做,但是老师让我这样做,为什么不使用主键。。?RDBMS是否有可能处理ID的生成?