文章详情页
MySQL的check约束中可以包含子查询吗
问题描述
我写了一句SQL如下:
create table if not exists Teachings( teacher varchar(255), classid varchar(32) references Class(id) check(teacher in (select username from Users where role = ’teacher’)));
但是在执行的时候报错(MySQL版本5.6.30):
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’check(teacher in (select username from Users where role = ’teacher’)))’ at line 4
是不是MySQL中的check约束不能包含子查询呢?如果是,我的这句SQL应该怎么实现呢?
PS:完整的SQL见这里
问题解答
回答1:DDL漏了个逗号
MySQL并不支持CHECK约束,参见MySQL文档
可以用触发器来实现
相关文章:
1. angular.js - angular 双向选框组件2. angular.js - 在用会话存储传递参数时,使用angularjs冲突3. angular.js - angular 引入 jweixin的问题4. angular.js - $emit(,)的具体意思是什么作用呢?5. jquery - angularjs的数据为什么渲染不到页面上?数据获取到了,我的代码哪里出了错了?6. node.js - 怎么在初始化的时候使得一个子组件不加载?7. angular.js - 请教angularjs里html和js通信的问题8. angular.js - 用angular2-cli打包项目之后,跳转路由刷新会报404的错误9. angular.js - angular post的Content-Type被设置,导致不能上传图片,求助!!10. angular.js - AngularJS v1.5.8 在IE9中出现灰屏,不启动的问题。
排行榜