您的位置:首頁技術文章
文章詳情頁

MySQL的check約束中可以包含子查詢嗎

瀏覽:72日期: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文檔

可以用觸發器來實現

相關文章:
国产综合久久一区二区三区