SQL的check不能用于mysql时的另一种处理
来源:互联网 发布:python 开发GIS 编辑:程序博客网 时间:2024/06/05 09:04
chekc在mysql中执行,语句并不会出错,但也不会起效果。
如下:
约束了city但并没有效果,但上面的语句也并没报错而且执行了。
这里我没就得另想办法了 我没可以用enum起到约束的作用;但是。。。用PHP这类弱类型语言 enum操作在很多方面会有限制要求。那时我们可以使用tinyint。
enum:
enum我们在创表的时候使用,这里可以看到enum中的数据即使是数字也需要但引号将其包裹。负责会报错。我觉得应该是将其作为固定的字符串来的定于的吧,也可能是我不知道的原因。
当执行不在规定范围内的数据时,执行会成功,但存入的数据会为空。
当设置简单的限制时可以使用enum,当复杂点的时候比如'>0'的操作是我们就需要使用触发器(Trigger),
触发器(Trigger)使用的语句规范:CREATE TRIGGER 触发名字 {BEFORE|AFTER} (何时执行){UPDATE|DELETE|INSERT}(何事触发) ON 表名 FOR EACH ROW BEGIN触发执行的SQL操作 END
下面可以是一个规定范围的例子,用if 判断了是否符合条件然后执行的sql语句,后面加上了‘;’,然后又一个end if结束if 后面再一次加上了一个‘;’。这两个‘;’ 在使用 if 的时候这都是不能少的否则会报错。
这是添加了触发器后添加的数据,可以看出最后一条 id=5 的 age不是10,而是12,因为执行了触发器。
而上面说的enum在PHP中的限制,是因为弱类型语言添加数据库时很多时候是不带引号的。当PHP添加不带引号时他执行的是第一条SQL语句,所以添加是第一个被enum()允许的值,所以他的添加在存在enum时存在硬性要求,添加进去的数据不一定是自己写进去的数据。如果想要添加自己写入的数据必须加上引号,使其SQL语句打印出来是第二条的样子。
这个是没有加引号的php填入的数据。
-------------------------------------------------------------------------------------------------------------------
这个 是加了引号的php填入的数据
以上关联的学习文章:
触发器相关 : http://www.cnblogs.com/nicholas_f/archive/2009/09/22/1572050.html;
enum相关 : http://www.cnblogs.com/-mrl/p/5096447.html; http://www.cnblogs.com/wangtianze/p/6700244.html
- SQL的check不能用于mysql时的另一种处理
- Mysql Constraint Check Workarounds(MYSQL不支持约束的处理)
- mysql 的 check约束
- 另一种处理Excel的方法NPOI
- C++的另一种错误处理策略
- SQL-CHECK约束的用法
- SQL中代替LIKE的另一种写法
- sql去重查询的另一种方式
- SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决
- mysql主从配置的另一种方法
- mysql 分录的另一种记录方式
- Django 内置的静态文件处理模块真的不能用于生产环境
- 图像处理:双线性差值的另一种处理方法
- Uitablevxiewcell中处理按钮点击的另一种处理方式
- 处理SQL 2008/08 中的OUTPUT与CHECK约束冲突的问题
- PL/SQL Developer连MS SQL的另一种方法
- android handler的两种用法(一种UI线程,另一种用于执行异步任务)
- sql实例不能启动的原因及处理
- python文件地址问题
- Ubuntu16.04下面spyder切换虚拟环境下面的python版本
- 在窗体中新建控件的方法
- github远程仓库上传项目二
- spark学习02之app流量统计并排序(JAVA)
- SQL的check不能用于mysql时的另一种处理
- Kotlin类和对象 (十三)--- 委托属性(Delegated Properties)
- ROS学习(一)ROS安装与创建工作空间
- java作业---接口
- Cookie和Session详解
- POJ2689 Prime Distance
- App分享 自定义页面
- 使用Python发送E-Mail (SMTP协议)
- JVM 【笔记】