我有一个名为 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;
答案 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”列更改为其他有意义的内容,因为它是保留关键字。