繁体   English   中英

如何使用序列号更新 oracle 列表列

[英]How to update oracle list column with sequence number

嗨,我有这样的 oracle 数据表

seq_no 姓名 地方
1 日安 我们
1 莫里 我们
1 莫利纳 我们

我想自动更新 seq_no 是这样的

seq_no 姓名 地方
1 日安 我们
2 莫里 我们
3 莫利纳 我们

如果你有一张桌子:

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;

然后该表将包含:

序列号 姓名 地方
1 日安 我们
2 莫里 我们
3 莫利纳 我们

然后当你想INSERT更多行时,你可以使用:

INSERT INTO table_name (seq_no, name, place)
VALUES (your_sequence.NEXTVAL, 'New Name', 'New Place');

和行:

序列号 姓名 地方
4 新名字 新地方

将添加下一个序列号。

或者,您可以编写触发器来获取下一个序列号,或者从 Oracle 12 中使用IDENTITY列。

db<> 在这里摆弄

“自动”是什么意思?

您可以创建表,以便SEQ_NO数据库触发器自动填充(在 11g 上不能使用标识列)。

或者,如果您想更新表,一个简单的选项是

update your_table set seq_no = rownum;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM