多表同步更新触发器

flayphshyph 2013-08-19 05:15:33
CREATE TRIGGER [dbo].[PURTG2] ON [dbo].[PURTG]
FOR INSERT
AS
DECLARE @TG001 CHAR(4),@TG002 CHAR(11),@TG004 CHAR(11),@TG042 CHAR(11),@TH003 CHAR(4),@TH004 CHAR(20),@TH005 CHAR(60),@TH006 CHAR(60),@TH007 CHAR(10),@TH008 NUMERIC(16,6),@TH009 CHAR(4),@TH010 NUMERIC(16,6),@TH012 NUMERIC(17,8),@TH013 NUMERIC(16,2),@TH018 VARCHAR(255),@TG1 Bigint,@TG2 Bigint /*单别,单别,客户编号,单剧日期,序号,品号,品名,规格,仓库,数量,单位,单价,金额,备注*/
SET @TG001='3300'
SET @TG004='LCGX01'
SET @TG1=(SELECT MAX(TG002) FROM COPTG)
SET @TG2=@TG1+1
--SELECT @TG042=TG014 FROM INSERTED
SELECT @TH003=PURTH.TH003,@TH004=PURTH.TH004,@TH005=PURTH.TH005,@TH006=PURTH.TH006,@TH007=PURTH.TH009, @TH008=PURTH.TH007,@TH009=PURTH.TH008,@TH012=PURTH.TH018,@TH013=PURTH.TH019,@TH018=PURTH.TH033,@TG042=TG014 FROM INSERTED,PURTH WHERE TG001=PURTH.TH001 AND TG002=PURTH.TH002
BEGIN
SET NOCOUNT ON
BEGIN
INSERT INTO COPTG (TG001,TG002,TG004,TG010,TG011,TG016,TG017,TG023,TG036,TG037,TG042)
VALUES (@TG001,@TG2,@TG004,'801','RMB','C','3','N','N','N',@TG042)
INSERT INTO COPTH (TH001,TH002,TH003,TH004,TH005,TH006,TH007,TH008,TH009,TH012,TH013,TH018,TH020)
VALUES (@TG001,@TG2,@TH003,@TH004,@TH005,@TH006,@TH007,@TH008,@TH009,@TH012,@TH013,@TH018,'N')
END
SET NOCOUNT OFF
END


提示“不能将值NULL插入列'TH003',表COPTH;列不允许有空值。INSERT失败”。
请问这是那段数据有问题???

COPTH.TH003是不允许为空值
但INSERTED表内的TH003字段是有值的(INSERTED表内的TH003也不允许有空值)
且已将INSERTED表内的TH003值赋给@TH003
怎么会存在INSERT为空值了??

请问这是那段语句有问题???
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flayphshyph 2013-08-20
  • 打赏
  • 举报
回复
flayphshyph 2013-08-20
  • 打赏
  • 举报
回复
flayphshyph 2013-08-19
  • 打赏
  • 举报
回复
1楼的兄弟你好 你给的语句有些不明白 应该怎样调试??? 麻烦再详细一些谢谢
Shawn 2013-08-19
  • 打赏
  • 举报
回复
    SELECT  @TH003 = PURTH.TH003 ,
            @TH004 = PURTH.TH004 ,
            @TH005 = PURTH.TH005 ,
            @TH006 = PURTH.TH006 ,
            @TH007 = PURTH.TH009 ,
            @TH008 = PURTH.TH007 ,
            @TH009 = PURTH.TH008 ,
            @TH012 = PURTH.TH018 ,
            @TH013 = PURTH.TH019 ,
            @TH018 = PURTH.TH033 ,
            @TG042 = TG014
    FROM    INSERTED ,
            PURTH
    WHERE   TG001 = PURTH.TH001
            AND TG002 = PURTH.TH002 	--问题只可能出现在这儿,INSERTED和PURTH联接的时候有问题。
	
	--dbo.test表自己先创建好。在触发器中加上这行代码调试。
	insert into dbo.test values(@TH003,@TH004,@TH005,@TH006,@TH007,@TH008,@TH009,@TH012,@TH013,@TH018,@TG042)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧