【发布时间】:2012-01-12 20:53:31
【问题描述】:
我有两张桌子:
CREATE TABLE users
(
id int PRIMARY KEY IDENTITY,
firstname varchar(30),
lastname varchar(30),
age int
)
CREATE TABLE rejectedUsers
(
id int PRIMARY KEY IDENTITY,
firstname nvarchar,
lastname nvarchar,
age nvarchar
)
还有一个触发器:
CREATE TRIGGER checkNumeric
ON users
INSTEAD OF INSERT
AS
INSERT INTO users SELECT firstname, lastname, age FROM inserted WHERE ISNUMERIC(age) = 1;
INSERT INTO rejectedUsers SELECT firstname, lastname, age FROM inserted WHERE ISNUMERIC(age) = 0;
-- goes fine
INSERT INTO users
VALUES
('Vlad', 'P', 21)
-- fails
INSERT INTO users
VALUES
('Chuck', 'Norris', 'abc')
第二个语句给我一个错误:
消息 245,第 16 级,状态 1,第 1 行
将 varchar 值 'abc' 转换为数据类型 int 时转换失败。
我希望触发器在 rejectedUsers 上执行插入操作,怎么了?
【问题讨论】:
-
也许是个愚蠢的问题,但触发器主体是否可能包含四个插入语句,而不是两个?我注意到你那里没有
GO...
标签: sql sql-server sql-server-2008 tsql sql-server-2008-r2