SQLserver 求一个触发器的编写

发布于 2022-03-08 12:48:51 字数 360 浏览 866 评论 3

  要进行一个数据库的优化,需要用到一个触发器,规则如下:

  表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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

疑心病 2022-03-11 02:23:29

表B要求实时性

断爱 2022-03-11 02:12:43

这样弄效率太低了吧,触发器本身何况效率也不高。 inserted.b 取不到值吗? 为什么不增量定时同步到表B

蓝颜夕 2022-03-10 09:31:46

我自己刚学触发器,不一定是对的哈,这个问题也隔得挺久的了,估计早就解决了吧。我的代码如下:
 

--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的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文