我有一些没有主键的列和 想添加主键列 .
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/