gpt4 book ai didi

sql - 如何将列从 PRIMARY KEY 更改为 Derby 的 IDENTITY

转载 作者:行者123 更新时间:2023-12-02 07:09:41 25 4
gpt4 key购买 nike

建表的SQL为:

CREATE TABLE myTable(id INTEGER NOT NULL PRIMARY KEY, ...)

相反,我需要它是:

CREATE TABLE myTable(id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), ...)

as described in the Derby documentation .所以我的问题是在初始创建语句之后我需要创建的 alter 语句是什么?换句话说:

CREATE TABLE myTable(id INTEGER NOT NULL PRIMARY KEY, ...)
ALTER TABLE myTable ...

非常感谢您的帮助!

最佳答案

查看 documentation这似乎是不可能的。您可以更改类型长度(甚至不是类型本身)、默认值、可空性和下一个生成的值,但即使是最后一个选项也需要该列已经定义为 IDENTITYthread from 2009说你甚至不能添加 IDENTITY 列。直到今天,一项测试仍证实了这一点。

所以似乎只有一个解决方案:你必须更换 table 。像这样:

  1. 使用包含所需列的占位符名称创建一个新表
  2. 从原始表中复制所有数据
  3. 删除原来的表
  4. 重命名新表

这确实是一个不幸的解决方案,因为如果您已经有其他表引用您表的 id 列,那将意味着进一步的工作。

我试过弄乱 system tables但它们似乎是只读的(并且有充分的理由)。

关于sql - 如何将列从 PRIMARY KEY 更改为 Derby 的 IDENTITY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7295391/

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