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’)));
但是在執(zhí)行的時(shí)候報(bào)錯(cuò)(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應(yīng)該怎么實(shí)現(xiàn)呢?
PS:完整的SQL見這里
問題解答
回答1:DDL漏了個(gè)逗號(hào)
MySQL并不支持CHECK約束,參見MySQL文檔
可以用觸發(fā)器來實(shí)現(xiàn)
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - 移動(dòng)端上不能實(shí)現(xiàn)拖拽布局嗎?3. boot2docker無法啟動(dòng)4. javascript - 如何判斷不同兩個(gè)對(duì)象觸發(fā)同一事件?5. android - 圖片列表分組之后復(fù)用問題6. nginx bind failed7. node.js - 安裝cordova時(shí)報(bào)錯(cuò),怎么解決?8. thinkPHP5中獲取數(shù)據(jù)庫(kù)數(shù)據(jù)后默認(rèn)選中下拉框的值,傳遞到后臺(tái)消失不見。有圖有代碼,希望有人幫忙9. python - django models 為生成的html元素添加樣式。10. angular.js - 單頁(yè)應(yīng)用(ng/vue)該如何監(jiān)聽用戶離開當(dāng)前頁(yè)面(或者路由)?

網(wǎng)公網(wǎng)安備