sql - Oracle SQL - 将主键添加到表

标签 sql oracle key add

我有一些没有主键的列和 想添加主键列 .

NAME    Age
-------------
Peter   45
Bob     25
John    56
Peter   45

有同事建议加一个带序列和触发器的PK :
Add a auto increment primary key to existing table in oracle

这很好,但是 我的客户使用无权添加序列或触发器的数据库用户 .
我想阻止联系数十个 DBA 管理员来更改用户权限或运行我的脚本。

这是我的建议,即添加仅包含更新语句的 PK:(我需要在第 2 步中获得帮助)

第 1 步:创建 ID 列(我为此拥有 DB 权限)
ALTER TABLE PERSON ADD ID NUMBER(10,0);

第 2 步:问题:我可以根据行的顺序或其他方式使用唯一值初始化 ID 列吗?如何?
UPDATE PERSON SET ID = something-unique

第 3 步:添加主键约束后记:(我 DB 对此有权限)
ALTER TABLE PERSON ADD CONSTRAINT PK_ID PRIMARY KEY(ID);

第 4 步:后记:主键由我的应用程序管理和添加。

这将是结果:
ID(PK)  NAME    Age
---------------------
1       Peter   45
2       Bob     25
3       John    56
4       Peter   45

谢谢各位!

最佳答案

Update person set id = rownum;

关于sql - Oracle SQL - 将主键添加到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19807314/

相关文章:

oracle - Oracle Forms 的可扩展性

windows - 如何在 vim 中映射 Shift-Tab? (Cygwin, Windows cmd.exe)

git - Heroku - MacOS Toolbest - 多个 heroku 帐户 ssh key 问题

objective-c - 我正在使用 sdl,如何发送假键盘事件?

sql - 更新 Oracle 的查询 if 语句

Oracle SQL Developer 详细输出

sql - 在选定的 ids postgresql 的其他字段上使用 distinct

MySQL 将表 1 中的多个列连接到表 2 上的多个列

mysql - 选择从插入到

php - 将 PDO 与 INSERT (PHP) 结合使用