在UPDATE语句使用别名
如果你赋予一个表或视图别名,那么必须使用这个别名在指定列以及任何列参考中包括在其它子句中。
例如:
正确的用法:
update Fruit set soort = 'pisang' where ...
update Fruit set Fruit.soort = 'pisang' where ...
update Fruit F set soort = 'pisang' where ...
update Fruit F set F.soort = 'pisang' where ...
下列语句子不可能执行
update Fruit F set Fruit.soort = 'pisang' where ...
SET子句
在SET子句中赋值语句包含多个列的更新值,它们之间由逗号为分隔符,在一个赋值语句中等号左边为列名右边为值或包含赋值的表达式都在右边。一个列也许只能包含一次在SET子句中,一个列能作为表达式在右边使用,旧的值将总是作为右边的值,即使该列在已SET子句中已分配新值。
这里有个例子: 数据在 TSET 表:
A B
----
1 0
2 0
赋值语句
UPDATE tset SET a = 5, b = a
将变更新如下的值
A B
----
5 1
5 2
注意这些旧的值 (1 和 2) 被用于更新 B列即使被赋了新值5
备注
并不总是像这样,2.5版之前,列获得了新值会立即分派,是一种非标准的方式,这个在2.5版中被修正
为了维护兼容性及旧代码,在配置文件firebird.conf中包含了配置参数OldSetClauseSemantics,设置为真(1)恢复到旧的不好的方式.这是一项临时措施--在未来将会被移除。