2016-06-09 50 views
3

我在两个系统中有两个表都具有相同的结构。我想在一个表中的数据更新到其他将数据从一个表更新到另一个失败

update Table1 
set VIEW_CD = cmn.VIEW_CD, 
    VIEW_DETAIL = cmn.VIEW_DETAIL 
FROM dbo.Table1 tbl 
INNER JOIN dbo.Table2 cmn ON tbl.id = cmn.id 

无论是在这两个表中列是空列,但我有例外结束了

无法插入NULL值插入列列呢不允许有空值。 INSERT失败。

回答

0

试试这个:

update Table1 
    set  VIEW_CD = cmn.VIEW_CD, 
    VIEW_DETAIL = cmn.VIEW_DETAIL 
    FROM dbo.Table1 tbl 
    INNER JOIN dbo.Table2 cmn ON tbl.id = cmn.id 
where VIEW_CD IS NOT NULL AND VIEW_DETAIL IS NOT NULL 

以上将与所有从表2,其中记录不包含任何NULL值的记录更新表1。

1

我认为,问题是,你有Table1NOT NULL约束,你应该放弃它:

ALTER TABLE dbo.Table1 ALTER COLUMN VIEW_CD <columnType> NULL 

或者这样:

ALTER TABLE dbo.Table1 ALTER VIEW_CD DROP NOT NULL 

然后再次运行查询。

+0

我尝试了上面的alter语句,但仍然失败。 “无法将NULL值插入列列的原因不允许空值,INSERT失败。”在我的情况下,错误是由于触发器在执行更新语句之前被触发的。 – user3595236

+0

@ user3595236也在第二列“VIEW_DETIAL”上执行。 – sagi

相关问题