Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 异常事务在触发器中结束。批处理已中止_Sql_Sql Server - Fatal编程技术网

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的生成?