oracle - 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;
解决方案
您使用的插入语句不正确。
它应该是
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;
此外,将“日期”列更改为其他有意义的内容,因为它是保留关键字。
推荐阅读
- python - 当级别设置为 WARNING 时,logging.debug( ) 正在运行代码。(PYTHON)
- linux - 我的 git 内部文件已更改。如何通过更改来拉动它们?
- python - 无法连接到 GCP
- ajax - 使用 Ajax Timer 执行 ASP.nett 代码隐藏方法
- scala - Proguard 不喜欢 scala 对象
- python - 我想将“-”替换为“\”,但它不像我预期的那样工作
- javascript - 延迟加载不适用于 .svg 和 .png 图像
- javascript - 如何使用 Vue Range Slider 将数字范围从一个点更改为另一个点
- java - 为什么在进行单元测试时我的 sonarqube 的覆盖率为 0%?
- flutter - 如何在颤振应用程序中更改状态栏的颜色