SQL的check不能用于mysql时的另一种处理

28 篇文章 0 订阅

  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







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值