首页 > 解决方案 > 尝试将表 1 中的数据插入表 2 时值不足

问题描述

我想在表中添加一列,但我收到表需要为空的错误。我使用以下命令创建备份表

 CREATE TABLE attachments_backup
 AS
 SELECT * FROM attachments 

当我创建备份表时,我将数据插入 attachmentsattachments_backup

 INSERT INTO attachments SELECT * FROM attachments_backup

table 1然后我从(附件)中删除数据

 DELETE FROM attachments

我添加了需要在表格附件中添加的列

 ALTER TABLE attachments 
 ADD ChildrenDirectory VARCHAR(50) DEFAULT NULL

就在这里问题发生了。由于我现在添加了新列,因此我可以将数据插入table 2 (attachment_backup)table 1 (attachments)

我尝试这样的事情

INSERT INTO attachments VALUES (AtaId,Belongs_To,ClientId,File_path,Id,Image_Path,Lock_,Name,Project_Id,Type,Category) SELECT * FROM attachments_backup

但是这个解决方案不起作用,因为我收到错误消息"Not enought values"

SQL Error: ORA-00947: not enough values
00947. 00000 -  "not enough values"

由于我没有更多的想法,现在有没有人如何解决这种问题?

附件表

ATAID   NUMBER(10,0)
BELONGS_TO  NUMBER(10,0)
CLIENTID    NUMBER(10,0)
FILE_PATH   VARCHAR2(255 CHAR)
ID  NUMBER(10,0)
IMAGE_PATH  VARCHAR2(255 CHAR)
ISDELETED   NUMBER(10,0)
LOCK_   CHAR(1 CHAR)
NAME    VARCHAR2(255 CHAR)
PROJECT_ID  NUMBER(10,0)
TYPE    VARCHAR2(4000 CHAR)
CATEGORY    VARCHAR2(20 BYTE)
CHILDRENDIRECTORY   VARCHAR2(50 BYTE)

附件_备份

ATAID   NUMBER(10,0)
BELONGS_TO  NUMBER(10,0)
CLIENTID    NUMBER(10,0)
FILE_PATH   VARCHAR2(255 CHAR)
ID  NUMBER(10,0)
IMAGE_PATH  VARCHAR2(255 CHAR)
ISDELETED   NUMBER(10,0)
LOCK_   CHAR(1 CHAR)
NAME    VARCHAR2(255 CHAR)
PROJECT_ID  NUMBER(10,0)
TYPE    VARCHAR2(4000 CHAR)
CATEGORY    VARCHAR2(20 BYTE)

标签: oracleplsql

解决方案


欢迎,

  1. 您可以使用 alter 命令向现有表添加新列,即使该表不为空

  2. 要从表“A”插入表“B”或反之亦然,您需要有确切的列数才能执行“select *”类型插入


推荐阅读