【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
要进行一个数据库的优化,需要用到一个触发器,规则如下:
表A (id int primary key,a nchar(50),b text);
表B (a nchar(50),b text);
我需要做的仅仅是插入A的时候往B里也放入一份拷贝,B的a字段为唯一的,插入的时候如果不存在则插入,存在则更新。
用的SQL server2008
遇到一个很麻烦的问题是instered里不能select text类型的字段,只能用id从A中查询,我写出来的触发器代码很长,而且还不能正常工作,求哪位前辈指点一下。
我自己刚学触发器,不一定是对的哈,这个问题也隔得挺久的了,估计早就解决了吧。我的代码如下:
--create table AA(ID INT PRIMARY KEY,NAME VARCHAR(100),CODE VARCHAR(500));
--create table BB(NAME VARCHAR(100),CODE VARCHAR(500));
create trigger tri_AA
on AA
after insert
as
begin
declare @id int,@name varchar(100),@code varchar(500);
select @id = ID,@name = NAME,@code = CODE from inserted;
IF EXISTS(SELECT * FROM BB WHERE NAME = @name)update BB set CODE = @code where NAME = @name;
IF not EXISTS(SELECT * FROM BB WHERE NAME = @name)insert into BB(NAME,CODE) values(@name,@code);
end
go
实测了一下,是OK的