首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

两表关联触发器的有关问题!

2012-12-17 
两表关联触发器的问题!!!!有两张表PURTC和PURTD 其中TC001TD001,TC002TD002,TCD01是PURTC上的字段当我更

两表关联触发器的问题!!!!
有两张表PURTC和PURTD 其中TC001=TD001,TC002=TD002,TCD01是PURTC上的字段
当我更新TCD01='Y'的时候,触发更新TD016='y'
不知道触发器写哪张表好?这样写,不知道错哪里,请大神指教!!!

CREATE TRIGGER PURTD20121123 ON [dbo].[PURTC] 
FOR INSERT
AS
DECLARE @TC001 CHAR(4),
        @TC002 CHAR(11),
        @TD001 CHAR(4),
        @TD002 CHAR(11),
        @TCD01 CHAR(1)   
                   
BEGIN TRANSACTION
SET NOCOUNT ON
SELECT @TC001=TC001,@TC002=TC002,@TCD01=TCD01 FROM INSERTED
SELECT @TD001=TD001,@TD001=TD001,@TD002=TD002 FROM PURTD WHERE TD001=@TC001 AND TD002=@TC002

IF UPDATE(TCD01) AND @TCD01='Y'
BEGIN
UPDATE PURTD SET TD016='y' WHERE TD001=@TC001 AND TD002=@TC002 AND TD018='Y' AND TD016='N'
END
SET NOCOUNT OFF
COMMIT TRANSACTION

[最优解释]
CREATE TRIGGER PURTD20121123 ON [dbo].[PURTC] 
FOR UPDATE
AS                
BEGIN TRANSACTION
    SET NOCOUNT ON
    UPDATE PURTD SET TD016='y'
FROM INSERTED i 
WHERE TD001=i.TC001 AND TD002=i.TC002 AND i.TD018='Y' AND i.TD016='N'
    END
    SET NOCOUNT OFF
COMMIT TRANSACTION

你这个应该是Update触发器

[其他解释]
写在第一张表上PURTC

更新的时候使用upate from语句  不要定义变量更新  那样的话如果更新多行数据就会出现问题
[其他解释]
引用:
写在第一张表上PURTC

更新的时候使用upate from语句  不要定义变量更新  那样的话如果更新多行数据就会出现问题

能写一下upate from语句  不是很明白你的意思……
[其他解释]
update tb
set tb.字段=i.字段 from inserted where i.关联字段=tb.关联字段

[其他解释]
引用:
SQL code?12update tbset tb.字段=i.字段 from inserted where i.关联字段=tb.关联字段
ALTER TRIGGER PURTD20121123 ON [dbo].[PURTC] 
FOR INSERT
AS
DECLARE @TC001 CHAR(4),
        @TC002 CHAR(11),
        @TD001 CHAR(4),
        @TD002 CHAR(11),
        @TCD01 CHAR(1)   
                   
BEGIN TRANSACTION
SET NOCOUNT ON
SELECT @TC001=TC001,@TC002=TC002,@TCD01=TCD01 FROM INSERTED
SELECT @TD001=TD001,@TD001=TD001,@TD002=TD002 FROM PURTD WHERE TD001=@TC001 AND TD002=@TC002


IF UPDATE(TCD01) AND @TCD01='Y'
BEGIN
UPDATE PURTD SET TD016='y' FROM INSERTED 
WHERE TD001=TC001 AND TD002=TC002 AND TD018='Y' AND TD016='N'
END
SET NOCOUNT OFF
COMMIT TRANSACTION

我这样写还是达不到要求呃,请问哪里有错呢?新手唉我是

热点排行