Oracle将表重命名为临时表,创建新表,然后将数据从临时表移至新表

时间:2018-08-09 12:10:06

标签: oracle

我有一个名为 MESSAGE_ID 的表:

MESSAGE_ID VARCHAR2(36 BYTE) PRIMARY KEY
DATE TIMESTAMP(6)
STATUS VARCHAR2(200 BYTE)

我想创建一个新表来添加一个新字段,该字段应该是主键。

alter table MESSAGE_ID rename to MESSAGE_ID_OLD;


CREATE TABLE MESSAGE_ID
(
    MY_ID NUMBER NOT NULL,
    MESSAGE_ID VARCHAR2(36) NOT NULL,
    DATE TIMESTAMP,
    STATUS  VARCHAR2(200),
    PRIMARY KEY(MY_ID)
);

现在我想从MESSAGE_ID_OLD中获取所有内容并将其插入新表中,但是我需要在MY_ID中放入一些内容,一些随机数或其他内容。

这就是我所拥有的,但是它给了我错误:

INSERT INTO MESSAGE_ID (MY_ID, MESSAGE_ID, DATE, STATUS)
(SELECT MY_SEQUENCE.nextval from dual), (SELECT MESSAGE_ID, DATE, STATUS FROM MESSAGE_ID_OLD));

然后我要删除旧表:

DROP TABLE MESSAGE_ID_OLD;

1 个答案:

答案 0 :(得分:1)

您使用的Insert语句不正确。

应该是

INSERT INTO MESSAGE_ID (
    MY_ID
    ,MESSAGE_ID
    ,DATE_t
    ,STATUS
    )
SELECT MY_SEQUENCE.nextval AS my_id
    ,MESSAGE_ID
    ,DATE_t
    ,STATUS
FROM MESSAGE_ID_OLD;

此外,将“ DATE”列更改为其他有意义的内容,因为它是保留关键字。

相关问题