db2为已有数据的表新增主键列并插入数据
时间: 2024-02-11 19:06:12 浏览: 112
DB2WarehouseV10.5构建列存储数据仓库最佳实践
如果你想为一个已经存在的 DB2 表新增一个主键列,并插入数据作为主键,可以按照以下步骤操作:
1. 使用 ALTER TABLE 命令为表添加一个新的主键列,指定数据类型和约束。
例如,为名为 "my_table" 的表添加一个名为 "id" 的主键列,可以使用以下 SQL 语句:
```
ALTER TABLE my_table ADD COLUMN id INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1) PRIMARY KEY;
```
这将添加一个名为 "id" 的主键列,数据类型为 INTEGER,并使用 IDENTITY 属性生成唯一的值。
2. 在插入新数据时,将主键列的值留空,DB2 将自动为其生成一个唯一的值。
例如,使用以下 SQL 语句向 "my_table" 表中插入一条数据:
```
INSERT INTO my_table (name, ...) VALUES ('John', ...);
```
这将在 "id" 列中生成一个新的唯一值,并将其插入到表中。你也可以将数据插入到所有其他列中。
如果你想为已有数据的表新增主键列并插入数据作为主键,可以使用以下 SQL 语句:
1. 首先,使用 ALTER TABLE 命令为表添加一个新的主键列,指定数据类型和约束,但是不要指定 GENERATED ALWAYS AS IDENTITY 属性。
例如,为名为 "my_table" 的表添加一个名为 "id" 的主键列,可以使用以下 SQL 语句:
```
ALTER TABLE my_table ADD COLUMN id INTEGER PRIMARY KEY;
```
2. 然后,使用 UPDATE 命令将已有数据的主键列更新为新的唯一值。
例如,使用以下 SQL 语句将 "id" 列更新为新的唯一值:
```
UPDATE my_table SET id = NEXT VALUE FOR my_sequence;
```
这将使用名为 "my_sequence" 的序列生成一个新的唯一值,并将其插入到 "id" 列中。
注意:在此之前,必须先创建一个名为 "my_sequence" 的序列,例如:
```
CREATE SEQUENCE my_sequence START WITH 1 INCREMENT BY 1 NO MAXVALUE NO CYCLE;
```
这将创建一个名为 "my_sequence" 的序列,起始值为 1,步长为 1,没有最大值,不循环。
3. 最后,你可以使用 SELECT 命令验证数据已经插入到表中,并且新的主键列是唯一的。
例如,使用以下 SQL 语句查询 "my_table" 表中的数据:
```
SELECT * FROM my_table;
```
这将返回 "my_table" 表中的所有数据,包括新的主键列。
阅读全文