INSERT触发器问题--------

--创建INSERT触发器
IF EXISTS (SELECT * FROM sys.objects WHERE name='tr_test' AND type='tr')
DROP TRIGGER tr_test
GO
CREATE TRIGGER tr_test ON Test
AFTER INSERT AS
IF (SELECT id from Test)>20
BEGIN
PRINT'NOT OVER 20'
ROLLBACK
END
GO

我第一次是上面这么写的,Test表中已有很多数据,在我执行插入数据时,就会报错:

消息 512,级别 16,状态 1,过程 tr_test,第 3 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。

语句已终止。

第二次我修改了一下:
--创建INSERT触发器
IF EXISTS (SELECT * FROM sys.objects WHERE name='tr_test' AND type='tr')
DROP TRIGGER tr_test
GO
CREATE TRIGGER tr_test ON Test
AFTER INSERT AS
IF 20<ANY(SELECT id from Test)
BEGIN
PRINT'NOT OVER 20'
ROLLBACK
END
GO

但是这种写法就会检查已有数据是否有id大于20 的情况,然后也插入不了数据了,报错是:

NOT OVER 20
消息 3609,级别 16,状态 1,第 1 行

事务在触发器中结束。批处理已中止。

是不是我的IF写的有问题,请问这个触发器该怎么写才行?