SQLserver 求一个触发器的编写
要进行一个数据库的优化,需要用到一个触发器,规则如下:
表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中查询,我写出来的触发器代码很长,而且还不能正常工作,求哪位前辈指点一下。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
表B要求实时性
这样弄效率太低了吧,触发器本身何况效率也不高。 inserted.b 取不到值吗? 为什么不增量定时同步到表B
我自己刚学触发器,不一定是对的哈,这个问题也隔得挺久的了,估计早就解决了吧。我的代码如下:
--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的