SQL:在表的行值更改后执行内部联接中的更改

时间:2013-12-26 22:49:28

标签: sql sql-server triggers sql-update inner-join

我的问题有些概念化。

我有一个关于SQL的过程,我将几个表连接在一起。例如:“mkt_Original”包含代码(A1,A3等),而“mkt_Desc”包含描述符(Aruba,Argentina等)。它们由内部联接连接并添加到临时表中:

SELECT CountryDesc, ColumnX into mkt_Temp 
FROM mkt_Original 
INNER JOIN mkt_Desc ON Mkt_Original.CountryCode = mkt_Desc.CountryCode

生成临时表后,我会根据其他列(ColumnX)的值对国家/地区代码进行一些更改。例如:

UPDATE mkt_Temp
SET mkt_Temp.CountryCode = A3
WHERE mkt_Temp.ColumnX = 3

然而,一旦我完成所有更新,我很好奇国家“描述”将如何更新(因为现在是另一个国家代码)。例如,如果最初存储了值A4,它将带回日本,当我更新到A3时,它应该说中国。

我是否必须在临时表和所有其他表之间运行另一个INNER JOIN查询,还是有更有效的方法?我正在阅读有关触发器的内容,但我不确定这种情况会是怎样的。任何触发器的帮助或代码都非常有用!

提前感谢您的时间。

1 个答案:

答案 0 :(得分:0)

如果我是你,如果没有很多变化,我将在连接条件中写一个案例陈述

SELECT CountryDesc, ColumnX into mkt_Temp 
FROM mkt_Original 
INNER JOIN mkt_Desc
ON (case when Mkt_Original.CountryCode = (case 
                                             when ColumnX = 3 then  'A3' else
                                          mkt_Desc.CountryCode end)