时间:2021-07-01 10:21:17 帮助过:144人阅读
update or insert是Firebird2.1 中增加一个语句,可以在此语句中根据匹配字段来判断目标表中是否有特定的记录,如果没有匹配的记录,就执行Insert,反之则更新除匹配字段外的其他字段。匹配的字段必须是主键。如果在是触发器或者存储过程中使用,还可以通过Re
update or insert是Firebird2.1 中增加一个语句,可以在此语句中根据匹配字段来判断目标表中是否有特定的记录,如果没有匹配的记录,就执行Insert,反之则更新除匹配字段外的其他字段。匹配的字段必须是主键。如果在是触发器或者存储过程中使用,还可以通过Returning子句返回特定的值到变量中。
文档中是这样说明:
- UPDATE OR INSERT INTO
- {tablename | viewname} [(<columns>)]
- VALUES (<values>)
- [MATCHING (<columns>)]
- [RETURNING <values> [INTO <variables>]]
- <columns> ::= colname [, colname ...]
- <values> ::= value [, value ...]
- <variables> ::= :varname [, :varname ...]</variables></values></columns></variables></values></columns></values></columns>
一个简单的例子:
- update or insert into khinfo (kh_code, kh_name)
- values ('900001', '昆明某某有限公司')
- matching (kh_code)
通过这个语句,可以把以往分做两个条件的新增Insert或者Update两个语句,合并为一个语句,通过判断主键是否存在,Firebird数据库内部就完成了执行insert或者Update的判断并执行,很是简洁。