关于SQL Server触发器的问题
我希望在插入新的数据或者修改的时候,有个计划号,这个不能冲突。
我用了自增字段做主键,我用触发器来控制,触发器很简单代码如下
CREATE trigger trg_CheckRepeatNo
on t_Plan
for insert,update
as
declare @NewNo varchar(50)
select @NewNo = PlanNo from inserted
if exists(select * from t_Plan where PlanNo = @NewNo)
begin
raiserror('存在重复的投料单号',16,1)
end
但是发生问题的是,我无论修改什么值,都会提示已经存在重复的投料单号
for语句不是应该在sql语句执行前触发的吗?
例如我随意修改一个计划单号,他都会提示,我新增,也会出现这个提示。哪怕号码不重复。
以前不会这样的啊,是不是哪里设置问题啊?
谢了
我用了自增字段做主键,我用触发器来控制,触发器很简单代码如下
CREATE trigger trg_CheckRepeatNo
on t_Plan
for insert,update
as
declare @NewNo varchar(50)
select @NewNo = PlanNo from inserted
if exists(select * from t_Plan where PlanNo = @NewNo)
begin
raiserror('存在重复的投料单号',16,1)
end
但是发生问题的是,我无论修改什么值,都会提示已经存在重复的投料单号
for语句不是应该在sql语句执行前触发的吗?
例如我随意修改一个计划单号,他都会提示,我新增,也会出现这个提示。哪怕号码不重复。
以前不会这样的啊,是不是哪里设置问题啊?
谢了
...全文
相关推荐
SQL server 触发器,在触发Merge过程中,逐行触发的解决办法 用group by 避免是一次触发中的多行更新或删除。
在SQL Server中,触发器是一种数据库对象,它可以在数据更改(INSERT、UPDATE或DELETE)时自动执行。
一个在SQL Server下建立修改整列信息的触发器
在SQL Server中,触发器是一种特殊的存储过程,它在数据更改操作(如INSERT、UPDATE或DELETE)发生时自动执行。
SQL Server开发人员应聘常被问的问题妙解汇总
SQL Server 开发人员在应聘时常常会被问及一系列专业问题,这些问题旨在评估他们的技能水平和对SQL Server的理解程度。以下是一些常见的面试问题及其详细解答:1. **什么是数据库对象?
SQL Server 触发器 表的特定字段更新时,触发Update触发器
然而,过度使用触发器可能会导致性能问题,因为它们增加了数据库的开销,因此在设计数据库时应谨慎考虑其使用。关于SQL Server中的其他相关知识点:1.
sql server 2008 存储过程与储发器 详解 书籍
在SQL Server 2008中,可以通过图形化工具(如SQL Server Management Studio,简称SSMS)来创建、修改和管理存储过程和触发器,也可以使用T-SQL脚本来进行操作。


