我有一個帶有列的 EMP 表
emp_id(number(10)), ename varchar2(25) and DOB (date)
記錄數 = 10 億。
emp_id 列完全為空,我必須用唯一值填充它。
完成任務的三個簡單步驟是什么?用 Oracle PL/SQL 代碼幫助我完成這項任務。
uj5u.com熱心網友回復:
只有2個步驟:
ALTER TABLE emp DROP COLUMN emp_id;
ALTER TABLE emp ADD (emp_id NUMBER GENERATED ALWAYS AS IDENTITY);
db<>在這里擺弄
同樣,2個步驟:
CREATE SEQUENCE emp__emp_id__seq;
UPDATE emp
SET emp_id = emp__emp_id__seq.NEXTVAL;
db<>在這里擺弄
一步:
如果您已經覆寫了列資料,那么要么ROLLBACK是最后一個事務,要么是從備份中恢復資料。
uj5u.com熱心網友回復:
emp_id 列完全為空,我必須用唯一值填充它。
如果您只想一次性完成,那么只需一步即可:
update emp set emp_id = rownum;
并且該列將具有唯一值。您不需要 PL/SQL(但請耐心等待,因為 10 億行是相當多的,這需要時間)。
如果您想在將來自動填充它,那么它取決于您使用的資料庫版本。在 12c 之前,您必須使用序列和資料庫觸發器。在以后的版本中,您仍然可以使用相同的(序列 觸發器)或 - 如 MT0 所示 - 標識列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/414316.html
標籤:
