2009-11-09 45 views
0

假设我有SQL填补列

  • first_table它有一个FK表second_table
  • 其中有一个名为name_field

列现在表second_table,我想要在名为name_fieldfirst_table中添加一列,并将其填入关联的second_table

我应该如何填充纯粹使用SQL的值?

(这是Oracle,如果该事项)

+1

我会建议使用视图而不是改变数据库模式(除非有充分的理由)。 – Kane 2009-11-09 07:16:12

+0

感谢您的建议,但我知道我想要做什么。 – RichN 2009-11-09 07:19:20

回答

1

您可以在FK表的触发器这么automaticaly做:

UPDATE table1 
SET <field> = (select <field> from inserted where id=table1.id) 
+2

-1因为触发器是魔鬼的工作。它们使系统维护和调试更加困难。 – 2009-11-09 10:39:00

+0

如果你知道这个字段只是由触发器更新,我找不到问题。触发器对某些任务是有利的,对其他人来说是不错的,是你选择使用它还是不使用魔鬼的工作;) – 2009-11-09 12:29:55

1
update (select first_table.name_field nf1, 
       second_table.name_field nf2 
      from first_table, 
       second_table 
      where ... (join condition) ... 
     ) 
set nf1 = nf2 
1

潜在的有2项不同的任务: 1 )初始化新列中的值 我认为下面的语法是最通用的 UPDATE table1 SET <field> = (select <field> from table2 where id=table1.id) 2)基于j的方法在2个表中的2列之间同步值.a.estevan