【问题标题】:Generated column doesn't work for z/os while it is ok in LUW生成的列不适用于 z/os,而在 LUW 中可以
【发布时间】:2018-10-03 14:19:32
【问题描述】:

以下 DDL 对 LUW 有效。

CREATE TABLE three_a(
    c1   INTEGER NOT NULL,
    c2   INTEGER NOT NULL GENERATED ALWAYS AS c1 + 10
)

但它对 z/OS 无效:

知道如何实现GENERATED ALWAYS 以像 SQL Server 中的计算列一样使用它吗?

【问题讨论】:

    标签: db2-zos


    【解决方案1】:

    在 Z/OS 版本中没有实现。您可以在 SQL 手册中的“create table”SQL 语句下找到“default”允许的各种选项。有一个选项可以在列上定义 fieldproc,但它不会(并且做)您想要的(在管理指南中有更多信息)。

    【讨论】:

      【解决方案2】:

      创建表 Table1 ( c1 INT 非空, TS INT NOT NULL 始终作为标识生成 );

      ROWID 类型(而不是 INT)是在没有“AS IDENTITY”的情况下定义的

      【讨论】:

      • 我不想要一个 IDENTITY 列,我想要一个依赖于其他数据的生成列。
      • “依赖于其他数据”是什么意思?
      • 我已经修改了这个问题。请再次检查。
      【解决方案3】:

      为此使用触发器。查看“创建触发器”命令的 SQL 手册。 如果您仅在插入行时需要它,那么“在插入触发器之前”就足够了。 如果您也希望它进行更改,那么您还需要一个“更新触发器”。

      【讨论】:

      • 问题是,大多数 DBMS 实现的一个非常基本的要求不适用于 db2 z/os。它甚至由 LUW 版本实现。除了触发器,我也可以更改我的所有插入语句,但这并不能回答问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 2021-04-26
      • 2021-06-19
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多