我有一些没有主键的列,想添加一个主键列。
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 列(我对此拥有数据库权限)
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
谢谢各位!