我有表“ Person”和表“ Fisica”,这是“ Person”的扩展。这两个表都与字段名称Id相关,并且我想根据包含两个表的条件来更新表。例如:
Tables:
Persona(Id, Name, Money)
Fisica(Id, LastName, Year)
附带数据:
Persona(1, X, 5)
Persona(2, A, 10)
Fisica(1, Y, 1990)
Fisica(2, B, 2000)
我想在Persona.Name ='X'时设置Persona.Name = some_Value,Fisica.LastName = other_Value和Fisica.Year = number,因此结果
Persona(1, some_Value, 5)
Persona(2, A, 10)
Fisica(1, other_Value, number)
Fisica(2, B, 2000)
我在甲骨文工作
您不能使用一个语句更新两个表。因此,您需要两个UPDATE
语句。
因此,您必须先更新一个,然后再更新另一个。问题是,哪个先出现?
没关系,但是如果先更新Persona并更改名称,则在更新Fisica时必须使用新名称。像这样:
update Persona
set name = 'some_Value'
where name = 'current_Name'
;
update Fisica
set lastname = 'other_Value',
year = number
where id = (
select id
from Persona
where name = 'some_Value'
)
;
如果先更新Fisica,则两次都使用name的旧值,如下所示:
update Fisica
set lastname = 'other_Value',
year = number
where id = (
select id
from Persona
where name = 'current_Value'
)
;
update Persona
set name = 'some_Value'
where name = 'current_Value'
;
注意number
必须替换为实际数值。
良好的编码习惯是将两个语句放在同一事务中,并且仅在两个语句都成功时才提交。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句