insert into reader values(1,'《所有》','刘江林',20217329,17264440107,1,100);哪里错了
时间: 2024-01-28 11:03:07 浏览: 21
这条 SQL 语句语法上没有错,但是若要执行需要满足以下条件:
1. `reader` 表已经存在;
2. `reader` 表有与 `insert` 语句中列名对应的列,且数据类型匹配;
3. `reader` 表中不存在 `id` 为 1 的记录,因为插入重复的主键会导致错误;
4. `insert` 语句中字符串类型的值需要用单引号括起来,如 `'《所有》'` 和 `'刘江林'`。
所以,你需要在执行该语句前,确认以上条件是否都满足,并根据实际情况对 SQL 语句进行修改。
相关问题
CREATE TABLE borrow( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, borrowtime date, returntime date, borrownum BIGINT, PRIMARY key(number) )ENGINE=InnoDB DEFAULT CHARSET=utf8;create table reader( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, sex varchar(10), borrownum BIGINT, originalbalance double, PRIMARY KEY(number) )ENGINE=InnoDB DEFAULT CHARSET=utf8;delimiter%% CREATE TRIGGER reader_borrow AFTER INSERT on reader FOR EACH ROW INSERT INTO borrow VALUES(new.number,new.borrowname,new.name,new.id,new.phone,NOW(),DATE_ADD(NOW(),INTERVAL 30 day),new.borrownum)%% delimiter;insert into reader values(1,'《所有》','刘江林',20217329,17264440107,1,100);哪里出错了
您的SQL语句有一些问题,可能是以下几个原因导致的错误:
1. 在第一行和第二行之间没有添加分号,应该在第一条语句后面添加分号。
2. 在第一行的 borrow 表中,borrownum 的数据类型没有指定,应该使用 BIGINT 或其他适当的数据类型。
3. 在第二行的 reader 表中,originalbalance 的数据类型没有指定,应该使用 DOUBLE 或其他适当的数据类型。
4. 在第三行的 TRIGGER 语句中,应该使用 NEW.number 代替 new.number。
以下是已经修改过的 SQL 语句:
CREATE TABLE borrow(
number BIGINT,
borrowname varchar(10),
name varchar(10),
id BIGINT,
phone BIGINT,
borrowtime date,
returntime date,
borrownum BIGINT,
PRIMARY KEY(number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE reader(
number BIGINT,
borrowname varchar(10),
name varchar(10),
id BIGINT,
phone BIGINT,
sex varchar(10),
borrownum BIGINT,
originalbalance DOUBLE,
PRIMARY KEY(number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER %%
CREATE TRIGGER reader_borrow AFTER INSERT ON reader
FOR EACH ROW
INSERT INTO borrow VALUES(
NEW.number,
NEW.borrowname,
NEW.name,
NEW.id,
NEW.phone,
NOW(),
DATE_ADD(NOW(),INTERVAL 30 DAY),
NEW.borrownum
)
%%
DELIMITER ;
INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100);
CREATE TABLE borrow( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, borrowtime date, returntime date, borrownum BIGINT, PRIMARY KEY(number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE reader( number BIGINT, borrowname varchar(10), name varchar(10), id BIGINT, phone BIGINT, sex varchar(10), borrownum BIGINT, originalbalance DOUBLE, PRIMARY KEY(number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; DELIMITER %% CREATE TRIGGER reader_borrow AFTER INSERT ON reader FOR EACH ROW INSERT INTO borrow VALUES( NEW.number, NEW.borrowname, NEW.name, NEW.id, NEW.phone, NOW(), DATE_ADD(NOW(),INTERVAL 30 DAY), NEW.borrownum ) %% DELIMITER ; INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100);出现1136 - Column count doesn't match value count at row 1错误
在执行最后一条SQL语句时,你在reader表中插入了7个值,但是reader表中定义了8个列。因此,你需要在INSERT语句中指定8个值,或者在表中删除一个列。
可以将INSERT语句修改为:
```
INSERT INTO reader VALUES(1,'《所有》','刘江林',20217329,17264440107,'1',100, 0.0);
```
其中0.0是originalbalance列的默认值。这样就可以成功插入一条记录了。