如何用序列号更新oracle列表列
How to update oracle list column with sequence number
您好,我有这样的 oracle 数据 table
seq_no
name
place
1
Rian
Us
1
Moli
Us
1
Molina
Us
我想自动更新 seq_no 成为那样
seq_no
name
place
1
Rian
Us
2
Moli
Us
3
Molina
Us
“自动”是什么意思?
您可以创建 table,以便 SEQ_NO
由 数据库触发器 自动填充(不能使用标识列,因为您在 11g 上)。
或者,如果您想更新 table,一个简单的选择是
update your_table set seq_no = rownum;
如果你有 table:
CREATE TABLE table_name (seq_no, name, place) AS
SELECT 1, 'Rian', 'Us' FROM DUAL UNION ALL
SELECT 1, 'Moli', 'Us' FROM DUAL UNION ALL
SELECT 1, 'Molina', 'Us' FROM DUAL;
和一个序列:
CREATE SEQUENCE your_sequence;
然后您可以使用以下方法将现有行更新为序列值:
UPDATE table_name
SET seq_no = your_sequence.NEXTVAL;
那么 table 将包含:
SEQ_NO
NAME
PLACE
1
Rian
Us
2
Moli
Us
3
Molina
Us
然后当你想要INSERT
更多行时,你可以使用:
INSERT INTO table_name (seq_no, name, place)
VALUES (your_sequence.NEXTVAL, 'New Name', 'New Place');
和行:
SEQ_NO
NAME
PLACE
4
New Name
New Place
将添加下一个序列号。
或者,您可以编写触发器来获取下一个序列号,或者从 Oracle 12 开始,使用 IDENTITY
列。
db<>fiddle here
您好,我有这样的 oracle 数据 table
seq_no | name | place |
---|---|---|
1 | Rian | Us |
1 | Moli | Us |
1 | Molina | Us |
我想自动更新 seq_no 成为那样
seq_no | name | place |
---|---|---|
1 | Rian | Us |
2 | Moli | Us |
3 | Molina | Us |
“自动”是什么意思?
您可以创建 table,以便 SEQ_NO
由 数据库触发器 自动填充(不能使用标识列,因为您在 11g 上)。
或者,如果您想更新 table,一个简单的选择是
update your_table set seq_no = rownum;
如果你有 table:
CREATE TABLE table_name (seq_no, name, place) AS
SELECT 1, 'Rian', 'Us' FROM DUAL UNION ALL
SELECT 1, 'Moli', 'Us' FROM DUAL UNION ALL
SELECT 1, 'Molina', 'Us' FROM DUAL;
和一个序列:
CREATE SEQUENCE your_sequence;
然后您可以使用以下方法将现有行更新为序列值:
UPDATE table_name
SET seq_no = your_sequence.NEXTVAL;
那么 table 将包含:
SEQ_NO NAME PLACE 1 Rian Us 2 Moli Us 3 Molina Us
然后当你想要INSERT
更多行时,你可以使用:
INSERT INTO table_name (seq_no, name, place)
VALUES (your_sequence.NEXTVAL, 'New Name', 'New Place');
和行:
SEQ_NO NAME PLACE 4 New Name New Place
将添加下一个序列号。
或者,您可以编写触发器来获取下一个序列号,或者从 Oracle 12 开始,使用 IDENTITY
列。
db<>fiddle here