Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - SQL 的用法 » 表、视图和索引 » 计算列

 

插入和更新计算列

有关计算列值插入与更新的注意事项包括以下几项:

  • 直接插入和更新   INSERT 或 UPDATE 语句能够为计算列指定值;然而,该值被忽略。服务器根据 COMPUTE 说明算出计算列的值,并使用计算值替代在 INSERT 或 UPDATE 语句中指定的值。

  • 列依赖性   强烈建议您不要使用触发器设置计算列的定义中引用的列值(例如,将 NULL 值更改为非 NULL 值),因为这会导致计算列的值不反映所需的计算。

  • 列出列名   您必须始终在 INSERT 语句中显式指定具有计算列的表的列名。

  • 触发器   如果对计算列定义触发器,任何影响该列的 INSERT 或 UPDATE 语句都将触发触发器。

LOAD TABLE 语句允许对计算列进行可选 计算。加载操作期间取消计算会使复杂的卸载/重装序列执行得更快。当计算列的值必须保持不变的情况下,这样做也很有用,即使 COMPUTE 表达式引用不确定值(如 CURRENT TIMESTAMP)。

避免更改触发器中相关列的值,因为这会导致计算列的值与列定义不一致。

如果计算列 x 依赖于已声明非 NULL 的列 y,则如果尝试将 y 设置为 NULL,将在触发器触发之前被拒绝,并生成错误消息。