SQL Server自动更新表
我目前正在使用此处显示的SQL语句从SQL Server自动更新表,sql,sql-server,tsql,triggers,Sql,Sql Server,Tsql,Triggers,我目前正在使用此处显示的SQL语句从dbo.table0获取所有不同的区域数据,但我想在dbo.table1(区域)将新区域插入列时触发自动插入/更新 但我不知道如何去质疑它 INSERT INTO dbo.table1(region) SELECT DISTINCT region FROM dbo.table0; 试试下面的触发器 Create table table0 (region varchar(20)) Create table table1 (region va
dbo.table0
获取所有不同的区域数据,但我想在dbo.table1(区域)
将新区域插入列时触发自动插入/更新
但我不知道如何去质疑它
INSERT INTO dbo.table1(region)
SELECT DISTINCT region
FROM dbo.table0;
试试下面的触发器
Create table table0 (region varchar(20))
Create table table1 (region varchar(20))
insert into table0 values ('Muslim'),('Christian'),('Hindu')
CREATE TRIGGER tg_Relegion ON table0
AFTER INSERT
AS
BEGIN
INSERT dbo.table1(region)
SELECT DISTINCT a.region FROM inserted a
LEFT JOIN table1 b on a.region = b.region
WHERE b.region IS NULL
END
insert into table0 values ('xx'),('Christian'),('Hindu')
select * from table1
当你们读到这篇文章时,你们被什么卡住了?嗨@Dale K,若我把上面的问题放在触发器的主体中。它会将dbo.table0中所有不同的区域数据再次插入dbo.table1,还是只插入dbo.table1中不存在的新区域数据。table1(区域)您希望在
更新时发生什么?关于删除
?嗨@HABO.@B.Muthamizhselvi已经给了我解决方案。顺便说一句,谢谢大家的帮助为什么你选择了dbo.table0而不是?检查每个区域而不是新插入的区域似乎效率低下。将表名更改为inserted而不是table0。非常感谢。