首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL高级篇-程序出了问题怎么办?

问题场景   先来看个场景:   执行一条插入语句,因为id是主键,没有设置自增,所以在插入的时候我们必须要添加该字段的值,但是上面没有添加就出现了1364的错误提示信息,针对这种情况我们应该怎么处理呢...上图中的 1364是 MySQL_error_code, HY000 是sqlstate_value 错误码 说明 MySQL_error_code 是数值类型错误代码,比如 1364 sqlstate_value...是长度为5的字符串类型错误代码,比如 HY000 案例:定义“Field_Not_Be_NULL”错误名与MySQL中违反非空约束的错误类型是“ERROR 1364 (HY000)”对应。...CONDITION FOR SQLSTATE 'HY000'; 3.定义处理程序   可以为SQL执行过程中发生的某种类型的错误定义特殊的处理程序。...SQLWARNING :匹配所有以01开头的SQLSTATE错误代码;NOT FOUND :匹配所有以02开头的SQLSTATE错误代码;SQLEXCEPTION :匹配所有没有被SQLWARNING或

63220
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL索引的一些小细

    (name) values ('yeyz'); ERROR 1364 (HY000): Field 'id' doesn't have a default value 不指定默认值,则会进行提醒...---+------+ 3 rows in set (0.00 sec) 结论: 主键列可以不设置not null和auto_increment选项,但是这种情况下,插入不包含主键列的记录,会提示主键没有默认值...此时,需要单独提供主键的默认值。 如果主键列为int类型,并且包含auto_increment选项,则可以直接插入不包含主键列的记录。 2 主键为多个字段时,是否允许其中一个字段自增?...,没有默认值会报错,如下: mysql >>insert into index_test4 (id) values (7); ERROR 1364 (HY000): Field 'name...4 当字段有null值时,反向查找可能会得到错误结果 看看下面这个例子: mysql >>select * from index_test3; +----+------+ | id | name

    53520

    MySQL中触发器的使用

    'HY000' SET message_text = msg; 如果该SIGNAL语句指示特定SQLSTATE值,则该值用于表示指定的条件 “HY000”被称为“一般错误”: 如果命令出现一般错误,则会触发后面的...; SELECT NEW.order_num into @a; 在虚表中找到我们插入的数据的编号,将标号保存在a变量中; 检测: insert INTO orders(order_date,cust_id...EACH ROW SET new.vend_state =UPPER(new.vend_state); UPDATE vendors SET vend_state='hw' where vend_id...='1001'; DROP TRIGGER UPDATEevendor; 注:upper:将文本转换为大写: 例二:不允许修改student表中的学号sno,如果修改该列则显示错误信息并取消操作。...) VALUES(old.order_num,old.order_date,old.cust_id); END 解释: 在删除order表中行中信息时,将删除的信息保存到archive_orders中;

    3.3K10

    第16章_变量、流程控制与游标

    MySQL_error_code 是数值类型错误代码。 sqlstate_value 是长度为 5 的字符串类型错误代码。...例如,在 ERROR 1418 (HY000) 中,1418 是 MySQL_error_code,'HY000’是 sqlstate_value。...错误类型(即条件)可以有如下取值: SQLSTATE '字符串错误码' :表示长度为 5 的 sqlstate_value 类型的错误代码; MySQL_error_code :匹配数值类型错误代码;...SQLWARNING :匹配所有以 01 开头的 SQLSTATE 错误代码; NOT FOUND :匹配所有以 02 开头的 SQLSTATE 错误代码; SQLEXCEPTION :匹配所有没有被...FETCH cur_emp INTO emp_id, emp_sal ; 注意:游标的查询结果集中的字段数,必须跟 INTO 后面的变量数一致,否则,在存储过程执行的时候,MySQL 会提示错误。

    37710

    MySQL数据库,从入门到精通:第十六篇——MySQL变量、流程控制和游标详解

    定义条件使用DECLARE语句,语法格式如下: DECLARE 错误名称 CONDITION FOR 错误码(或错误条件) 错误码的说明: MySQL_error_code和sqlstate_value...MySQL_error_code是数值类型错误代码。 sqlstate_value是长度为 5 的字符串类型错误代码。...例如,在ERROR 1418 (HY000)中, 1418 是MySQL_error_code,'HY000’是sqlstate_value。...错误类型 (即条件)可以有如下取值: SQLSTATE ‘字符串错误码’:表示长度为 5 的sqlstate_value类型的错误代码; MySQL_error_code:匹配数值类型错误代码; 错误名称...SQLWARNING:匹配所有以 01 开头的SQLSTATE错误代码; NOT FOUND:匹配所有以 02 开头的SQLSTATE错误代码; SQLEXCEPTION:匹配所有没有被SQLWARNING

    25310

    MySQL:表的约束

    : mysql> insert into myclass(class_name) values('class1'); ERROR 1364 (HY000): Field 'class_room' doesn't...对于default而言,当用户忽略这一列的时候,如果设置了default,则使用默认值;如果没有设置default,则报错。 而对于age列: 下来再来看这个: 为什么还是让插入了呢?...而如果为我们没有在创建表的时候显示声明默认值,MySQL会优化,自动加上默认值为NULL。 四....语法: foreign key (字段名) references 主表(列) 案例: 这样的student只是有外键之名(关联关系),但是没有外键之实(没有约束)。重新创建一个。...外键需要注意: (1)从表和主表的关联关系 (2)产生外键约束 总结: 好了,到这里今天的知识就讲完了,大家有错误一点要在评论指出,我怕我一人搁这瞎bb,没人告诉我错误就寄了。

    6710

    MySQL触发器

    代码举例3 定义触发器“salary_check_trigger”,基于员工表“employees”的INSERT事件,在INSERT之前检查将要添加的新员工薪资是否大于他领导的薪资,如果大于领导薪资,则报sqlstate_value...为'HY000'的错误,从而使得添加失败。...= NEW.manager_id; IF NEW.salary > mgrsalary THEN SIGNAL SQLSTATE 'HY000' SET MESSAGE_TEXT = '薪资高于领导薪资错误...我用下面的代码演示一下  结果显示,系统提示错误,字段“aa”不存在。 这是因为,触发器中的数据插入操作多了一个字段,系统提示错误。...说不定你还会给会员信息表添加一个叫“aa”的字段,试图解决这个问题,结果只能是白费力。 2、相关数据的变更,可能会导致触发器出错。

    3.2K20

    MySQL操作之存储过程

    DEFAULT value:子句给变量提供一个默认值。该值除了可以被声明为一个常数之外,还可以被指定为一个表达式。 如果没有Default子句,变量的初始值为null。...sqlstate_value和 mysql_error_code:**都可以表示MySQL的错误。 sqlstate_value:表示长度为5的字符串类型的错误代码。...可以有 SQLSTATE[VALUE]sqlstate_value:包含5个字符的字符串错误值。 condition_name:表示DECLARE CONTINUE 定义的错误条件名称。...SQLWARNING:匹配所有以01开头的SQLSTATE错误代码。 NOT FOUND:匹配所有以02开头的SQLSTATE错误代码。...SQLEXCEPTION:匹配所有没有被SQLWARING和NOT FOUND捕获的SQLSTATE错误代码。 mysql_error_code:匹配数值类型错误代码。

    29920
    领券