求助帖,折磨人的触发器!
两个表,其中table1 中的A列为主键,在table2中C+D列为主键,C列与A列关联。
一个触发器,需要实现功能:新增table2时,当E字段在(-1,3)区间范围内时,判断为Y,否则为N。并且在C列值相同的情况下,不管有多少笔序号(即多笔数据),只要其中有一个判断为N,and table1.A=table2.C,那么返回N到table1的B列对应字段中,否则返回Y。
table1
A(KEY) B
10 Y
20 Y
30 N
table2
C D(序号) E 判断
10 01 -1 Y
10 02 0 Y
20 01 3 Y
20 02 2 Y
20 03 5 N
30 01 2 Y
30 02 4 N
我写的触发器如下:
ALTER trigger [dbo].[T] ON [dbo].[table2] FOR INSERT
AS
SET NOCOUNT ON;
BEGIN
UPDATE table1 SET table1.B=( CASE WHEN (table2.E>=-1 AND table2.E<=3)THEN 'Y' ELSE 'N' END )
FROM table1 AS T1,table2 AS T2 WHERE T1.A=T2.C
END
但是如果这样的话,因为table2中会有多个判断值,所以每次进行新增时,会提示子查询的返回值不止一个。求解,如何实现只返回一个值呢。