0
点赞
收藏
分享

微信扫一扫

报错Check constraint “book_chk_1“ is violated。难道MySQL中insert 语句只能一条一条插入?

Greatiga 2022-04-28 阅读 33
mysql

11.1问题描述

这是来自老师sql server的代码(关于图书馆的),(最开始是没有分号的,添加后不会报错了)但是我选中运行是不能一次性全部插入的,运行单条语句没问题,选择多条insert语句运行,要么报错不能插入,要么随机插入一条。

insert Book values('B201503001','C003','数据库系统原理','万慧红','P002',22.20,'20140101','20150111',8);
insert Book values('B201601001','C003','操作系统原理','左万力','P003',31.50,'20140102','20150112',10);
insert Book values('B201605002','C003','现代操作系统','陈向群','P002',41.00,'20150202','20150812',10);
insert Book values('B201601003','C003','数据结构','章新雨','P002',18.80,'20150302','20151212',5);
insert Book values('B201503002','C003','数据库系统概念','王珊','P005',28.20,'20140501','20150111',5);

区别:

分号是分隔每条 SQL 语句的标准方法,但在MS Access 和 SQL Server要求不严格,则不必在每条 SQL 语句之后使用分号;

而MySQL对分号的使用有严格的规范,正如上面如果多条insert 语句不添加分号;是会出现小红线 报错的。

因此也可以理解为什么 出现——运行单条语句没问题,选择多条,要么报错不能插入,要么随机插入一条——这个现象了。因为他在识别语句 结束 时,可能发生识别错误。如下给了我报错及解决的情况截图:

11.2 解决办法

(1)插入多条语句的语法特别之处

  • 一条insert语句只能插入一条记录:常见的insert语句,向数据库中,一条语句只能插入一条数据

  • 批量插入数据了, 遵循如下这样的语法:

    逗号隔开每条数据,且保证一个insert 关键字,values可多个值

    insert Book values('B201503001','C003','数据库系统原理','万慧红','P002',22.20,'20140101','20150111',8),
    ('B201601001','C003','操作系统原理','左万力','P003',31.50,'20140102','20150112',10),
    ('B201605002','C003','现代操作系统','陈向群','P002',41.00,'20150202','20150812',10),
    ('B201601003','C003','数据结构','章新雨','P002',18.80,'20150302','20151212',5);

    注:sql server与MySQL存在使用及语法的差别,累计,别灰心。

(2)修正过程

  • 最开始,无论插入一条还是多条语句insert,报错显示Check constraint "book_chk_1" is violated;

  • 然后报错说约束问题 于是删掉了约束 并改了regexp 和后面的正则表达式(之前的经验);  

  • 进行了insert多条语句的语法修改,可成功插入多条了

     

     最后便可以解决问题啦~(如有表述不对,敬请指教)

 

举报

相关推荐

0 条评论