gpt4 book ai didi

sql - 如何将序列列添加到包含记录的现有表中

转载 作者:行者123 更新时间:2023-12-03 13:15:41 28 4
gpt4 key购买 nike

我创建了一个名为 USERLOG 的新表,其中包含来自先前 VIEW 的两个字段。该表已经包含大约 9000 条记录。取自VIEW的两个字段,即weblog_views由IP(由IP地址组成)和WEB_LINK(由URL组成)组成。这是我使用的代码,

    CREATE TABLE USERLOG
AS
SELECT C_IP, WEB_LINK FROM weblog_views;

我想向该表中添加另一列名为 USER_ID 的列,该列由以 1 到 9000 条记录开头的序列组成,以便为每个现有行创建一个唯一 ID。我需要这部分的帮助。我使用的是 Oracle SQL Developer:ODMiner 3.0.04 版。
我尝试使用 AUTO-INCREMENT 选项,
    ALTER TABLE USERLOG
ADD USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT;

但是我得到了一个错误,
    Error report:
SQL Error: ORA-01735: invalid ALTER TABLE option
01735. 00000 - "invalid ALTER TABLE option"

所以,我真的很感激我能得到的任何帮助!

最佳答案

您需要添加一列

ALTER TABLE userlog
ADD( user_id number );

创建一个序列
CREATE SEQUENCE user_id_seq
START WITH 1
INCREMENT BY 1
CACHE 20;

更新表中的数据
UPDATE userlog
SET user_id = user_id_seq.nextval

假设你想要 user_id要成为主键,您将添加主键约束
ALTER TABLE userlog
ADD CONSTRAINT pk_user_id PRIMARY KEY( user_id );

如果要使用序列自动添加 user_id当你做 INSERT (另一种选择是在您的 user_id_seq.nextval 语句中专门引用 INSERT,您还需要一个触发器
CREATE OR REPLACE TRIGGER trg_userlog_user_id
BEFORE INSERT ON userlog
FOR EACH ROW
BEGIN
:new.user_id := user_id_seq.nextval;
END;

关于sql - 如何将序列列添加到包含记录的现有表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782824/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com