你是写在同一事务了? 你可以采用AFTER 或FOR 触发器呀,插入成功后触发CREATE TRIGGET TRI_IN_A ON A FOR INSERT AS BEGIN INSERT B SELECT * FROM INSERTED I WHERE NOT EXISTS(SELECT 1 FROM B WHERE I.ID=B.ID) END
用AFTER也一样 如果触发器出错 表A一样插入不了记录
执行b的插入后,你可以判断 @@ERROR 然后决定是否TEMP_ERROR
NOT EXISTS(SELECT 1 FROM B WHERE I.ID=B.ID) 已经先判断了有没重复的
使用跨库查询 一个库挂了或者出问题不能正常插入记录的话 能否判断写@@ERROR 是什么格式的?
create table a ( id int identity(1,1), names varchar(20) ) go create table b ( id int identity(1,1), names varchar(20) unique ) go create trigger t_info on a instead of insert as insert into a select names from inserted declare @name varchar(20) set @name=(select names from inserted) if exists (select names from b where names=@name) begin --在这里向表TEMP_ERROR添加记录 end else insert into b select names from inserted
你可以采用AFTER 或FOR 触发器呀,插入成功后触发CREATE TRIGGET TRI_IN_A ON A FOR INSERT
AS
BEGIN
INSERT B SELECT * FROM INSERTED I
WHERE NOT EXISTS(SELECT 1 FROM B WHERE I.ID=B.ID)
END
如果触发器出错 表A一样插入不了记录
然后决定是否TEMP_ERROR
已经先判断了有没重复的
能否判断写@@ERROR 是什么格式的?
(
id int identity(1,1),
names varchar(20)
)
go
create table b
(
id int identity(1,1),
names varchar(20) unique
)
go
create trigger t_info
on a
instead of insert
as
insert into a select names from inserted
declare @name varchar(20)
set @name=(select names from inserted)
if exists (select names from b where names=@name)
begin
--在这里向表TEMP_ERROR添加记录
end
else
insert into b select names from inserted