gpt4 book ai didi

sql - Firebird 'update or insert into' 在值中有字段引用吗?

转载 作者:行者123 更新时间:2023-12-04 14:15:07 26 4
gpt4 key购买 nike

我想在 Firebird 2.5 表中更新或插入一行,但我希望我插入的值在它们为空时被忽略。

我希望这样的事情可以做到:

update or insert into TargetTable
( FieldA, FieldB )
values
( :fielda, coalesce(:fieldb, FieldB ))

但是,Firebird 不允许在“值”列表中引用 FieldB。

它确实允许这种更新语法:
update TargetTable
set FieldB = coalesce( :fieldb, FieldB )
where
FieldA = :fielda

但这需要我单独处理插入。

有没有办法在字段值上同时获取更新/插入和合并?

最佳答案

看看这里:http://tracker.firebirdsql.org/browse/CORE-3456

不过,您可能会查看 MERGE 语句:http://www.firebirdsql.org/refdocs/langrefupd21-merge.html

merge into TargetTable e
using (select :fielda FieldA, :fieldb FieldB from RDB$DATABASE ) n
on e.FieldA = n.FieldA
when matched then
update set e.FieldB = coalesce( n.FieldB, e.FieldB )
when not matched then
insert (FieldA, FieldB) values ( n.FieldA, n.FieldB )

关于sql - Firebird 'update or insert into' 在值中有字段引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com