A表,B表 当把数据插入A表的时候,A表的一个字段addr是空的,需要通过A表的type字 15

A表,B表当把数据插入A表的时候,A表的一个字段addr是空的,需要通过A表的type字段去B表跟B表的type比对,然后把B表查询出来的addname插入A表的addr... A表,B表

当把数据插入A表的时候,A表的一个字段addr是空的,需要通过A表的type字段去B表跟B表的type比对,然后把B表查询出来的addname插入A表的addr 。触发器怎么写?
展开
 我来答
yuchor
2011-07-29 · 超过34用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:107万
展开全部
--插入测试数据
create table A
(
ID int,
name varchar(20),
ty_pe varchar(20),
addr varchar(20)
)

create table B
(

ty_pe varchar(20),
addname varchar(20)
)

insert into B (ty_pe,addname)values('A1','河南省')
insert into B (ty_pe,addname)values('A2','广西省')
insert into B (ty_pe,addname)values('A3','云南省')
insert into B (ty_pe,addname)values('A4','上海市')
insert into B (ty_pe,addname)values('A5','北京')

-------------------------------------------------

--创建触发器
IF EXISTS( SELECT NAME FROM SYSOBJECTS WHERE NAME ='TRI_INSERT' )
DROP TRIGGER TRI_INSERT
GO

CREATE TRIGGER TRI_INSERT
ON A
FOR INSERT
AS
BEGIN TRANSACTION
DECLARE @ADDNAME VARCHAR(20)
SELECT
@ADDNAME=B.addname
FROM
INSERTED I,B B
WHERE
I.ty_pe=B.ty_pe

UPDATE A
SET addr=@ADDNAME
FROM A ,INSERTED
WHERE A.ty_pe=INSERTED.ty_pe

COMMIT TRANSACTION
GO
--------------------------------
--插入数据测试
insert into A (ID,name,ty_pe)values(1,'张三','A1')
insert into A (ID,name,ty_pe)values(2,'李四','A2')
insert into A (ID,name,ty_pe)values(3,'王五','A3')
insert into A (ID,name,ty_pe)values(4,'赵六','A4')
insert into A (ID,name,ty_pe)values(5,'孙七','A5')
------------------------------------------------------
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式