MySQL约束语句没效果, 帮我看看哪里有问题

LawlietCTW 2011-03-30 04:41:51

create table tt
(
ind char(1),
constraint ck_ind check(ind = 'A' or ind= 'B')
);

insert into tt values('C');

select * from tt;

B被插入进去了,check没作用?
...全文
82 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-03-30
  • 打赏
  • 举报
回复
[Quote]初学者, 这学期刚上数据库.[/Quote]一般学校的数据库教材是以ORACLE为准的。建议你还是安装ORACLE吧。
ACMAIN_CHM 2011-03-30
  • 打赏
  • 举报
回复
[Quote]foreign key[/Quote]是支持的,但需要在INNODB存储引擎下。

对于CHECK,如果是简单的枚举,比如你例子中的,则可以用ENUM
如果是复杂的则在BEFORE INSERT触发器中实现。

http://blog.csdn.net/ACMAIN_CHM/archive/2009/07/25/4380183.aspx
MySQL 中如何在触发器里中断记录的插入或更新?
WWWWA 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lawlietctw 的回复:]
foreign key 和 check 都不支持啊, 可有其他方法实现?
初学者, 这学期刚上数据库.
[/Quote]
支持外键
用ENUM类型 OR TRIGGER解决
LawlietCTW 2011-03-30
  • 打赏
  • 举报
回复
foreign key 和 check 都不支持啊, 可有其他方法实现?
初学者, 这学期刚上数据库.
ACMAIN_CHM 2011-03-30
  • 打赏
  • 举报
回复
[Quote=MySQL 5.1参考手册]MySQL服务器对CREATE TABLE语句中的FOREIGN KEY和REFERENCES语法进行分析,但不采取进一步的行动。所有的存储引擎均对CHECK子句进行分析,但是忽略CHECK子句。[/Quote].
WWWWA 2011-03-30
  • 打赏
  • 举报
回复
check在MYSQL没有作用,用ENUM OR TRIGGER解决
ACMAIN_CHM 2011-03-30
  • 打赏
  • 举报
回复
MYSQL目前为止的版本中,并不支持CHECK,在语法中对CHECK会直接过滤。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧