文章詳情頁
MySQL的check約束中可以包含子查詢嗎
瀏覽:91日期:2022-06-21 09:44:00
問題描述
我寫了一句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. MySQL 使用 group by 之后然后 IFNULL(COUNT(*),0) 為什么還是會獲得 null2. mysql 為什么主鍵 id 和 pid 都市索引, id > 10 走索引 time > 10 不走索引?3. wordpress里,這樣的目錄列表是屬于小工具還是啥?4. 我的怎么不顯示啊,話說有沒有QQ群什么的5. 常量在外面不加引號會報錯。6. 一直報這個錯誤7. mysql federated引擎無法開啟8. sublime text3安裝package control失敗9. mysql - 大部分數據沒有行溢出的text字段是否需要拆表10. 語法錯誤,意外’:’
排行榜
