日期:2014-05-17  浏览次数:20531 次

SQLserver 2005 触发器 if条件 问题
我做了一个修改表单条记录触发器,有个存储过程修改了该表的多条记录,程序出现错误。(存储过程修改的不满足if条件)是否在if条件做比较时报错?
SQL?Server

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

没看懂lz说的状态。 如果是存储过程的错误,lz可以进行调试,或者是进行逐条语句的执行看一下。 

我发现错误了,我说的是触发器报错。if条件里面我判断的是单条修改的情况用=。存储过程修改多条的时候=的地方就报错,=可以换成in  。我还想问下,如果是null 的情况 应该怎么处理。(就是 (select X from inserted)is null 。)这句应该咋写?


如果是判断存在与否,lz可以使用exists(null的情况也是存在与否的判断)

if exists(select 1 from inserted where id in (****))  --类似这样

 
就是in 后面的()里面可以写 null 吗?


null 是无法进行in判断的。 如果非要判断是否含有null值的话,lz可以使用isnull 返回一个指定值来判断。
谢谢兄台。可不可以给举个例子。



DECLARE @i TABLE(id VARCHAR(10))

INSERT INTO @i(id)

SELECT 'A' UNION 
SELECT 'B' UNION 
SELECT 'C' UNION 
SELECT 'D' 
--UNION SELECT NULL   --lz看看添加上这句和不添加这句,就知道了

--SELECT * FROM @i

IF EXISTS(SELECT 1 FROM @i WHERE id IN ('A','B','C') ) AND EXISTS(SELECT 1 FROM @i WHERE id IS NULL)
PRINT 'OK'
ELSE
PRINT 'NO'