SQL2000里两个表之间的操作
同一个数据库里,A表中当字段data的值大于100时,B表里执行一条update语句,如何实现?谢谢一楼,我再多问一句,这个触发器能在A表更新时自动执行吗,还有,能把代码...
同一个数据库里,A表中当字段data的值大于100时,B表里执行一条update语句,如何实现?
谢谢一楼,我再多问一句,这个触发器能在A表更新时自动执行吗,还有,能把代码简单地解释一下吗。悬赏+20 展开
谢谢一楼,我再多问一句,这个触发器能在A表更新时自动执行吗,还有,能把代码简单地解释一下吗。悬赏+20 展开
展开全部
问题补充:
谢谢一楼,我再多问一句,这个触发器能在A表更新时自动执行吗,还有,能把代码简单地解释一下吗。悬赏+20
-----------是自动执行的
以下举一个完整的例子
USE tempdb
GO
CREATE TABLE A(ID INT PRIMARY KEY,DATA INT)
INSERT A SELECT 1,10
UNION ALL SELECT 2,20
CREATE TABLE B(A_ID INT FOREIGN KEY REFERENCES A(ID),DATA INT)
INSERT B SELECT 1,100
UNION ALL SELECT 2,100
go
create trigger tr_A on A
for update,insert
as
update b
set DATA=i.Data
from inserted i ,B
where i.ID=B.A_ID and i.Data>100
go
--更新A表,Data<=100时,不更新B表
UPDATE A SET DATA=99 WHERE ID=1
SELECT * FROM B WHERE A_ID=1
/*
A_ID DATA
1 100
*/
--更新A表,Data>100时,更新B表
UPDATE A SET DATA=101 WHERE ID=1
SELECT * FROM B WHERE A_ID=1
/*
A_ID DATA
1 101
*/
--DROP TABLE B,A
谢谢一楼,我再多问一句,这个触发器能在A表更新时自动执行吗,还有,能把代码简单地解释一下吗。悬赏+20
-----------是自动执行的
以下举一个完整的例子
USE tempdb
GO
CREATE TABLE A(ID INT PRIMARY KEY,DATA INT)
INSERT A SELECT 1,10
UNION ALL SELECT 2,20
CREATE TABLE B(A_ID INT FOREIGN KEY REFERENCES A(ID),DATA INT)
INSERT B SELECT 1,100
UNION ALL SELECT 2,100
go
create trigger tr_A on A
for update,insert
as
update b
set DATA=i.Data
from inserted i ,B
where i.ID=B.A_ID and i.Data>100
go
--更新A表,Data<=100时,不更新B表
UPDATE A SET DATA=99 WHERE ID=1
SELECT * FROM B WHERE A_ID=1
/*
A_ID DATA
1 100
*/
--更新A表,Data>100时,更新B表
UPDATE A SET DATA=101 WHERE ID=1
SELECT * FROM B WHERE A_ID=1
/*
A_ID DATA
1 101
*/
--DROP TABLE B,A
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询