创建并插入表

时间:2019-05-02 14:54:12

标签: oracle sql-insert

我为数据库创建了一个表,并创建了该表,但是插入值不起作用。

这是表格

Create table patient (
Patient_ID Number(9) primary key,
First_name varchar2(15),
Last_name varchar2(10),
Contact number(10),
City varchar2(20),
Doctor_ID Number(9) references Doctor(Doctor_ID));

这是插入语句

insert into patient values ('21345', 'John', 'Smith', '111-111-1111', 'NJ');   
insert into patient values ('21346', 'Emily', 'Rose', '222-222-2222', 'LA');  
insert into patient values ('21347', 'Mark', 'Cruise', '333-333-3333', 'NY');
insert into patient values ('21348', 'Bran', 'Stark', '444-444-4444', 'TX');    
insert into patient values ('21349', 'Hailey', 'Wraith', '555-555-5555', 'AZ');

我得到一个错误,说值不够。

2 个答案:

答案 0 :(得分:1)

您的表只需要6个值(父母ID,名字,姓氏,联系人,城市和医生ID)时,您只会插入5个值

您需要传递Doctor_ID的值

答案 1 :(得分:0)

您忘记了在插入过程中添加表的列名,因此它尝试将传递的所有数据添加到表中的每一列。当不需要您将数据插入所有表列时,这是一种输入数据的更好方法。

Insert into `patient` (`table1`, `table2`, `table3`, `table4`, `table5`) values ('21345', 'John', 'Smith', '111-111-1111', 'NJ');

要进一步分解问题,表中有6列,但是传递的数据为5,这会给您此错误,因为5小于6。如果您不希望收到此错误,需要说明您要进入的每一列,如上所示-但是该字段必须为可空字段。

在这种情况下,缺少Doctor_ID

Insert into `patient` (`table1`, `table2`, `table3`, `table4`, `table5`, `table6` ) values ('21345', 'John', 'Smith', '111-111-1111', 'NJ', 'DOCTOR_ID_DATA_HERE');

答案:

Insert into `patient` (`Patient_ID`, `First_name`, `Last_name`, `Contact`, `City`, `Doctor_ID`) values ('2125', 'John', 'Doe', '111-111-1111', 'LA', '30114');

DOCTOR 30114必须已经存在,因为您正在从另一个表进行引用,请注意!!