我正在創建我的第一個mysql腳本,並希望創建一個'type'列的表。它應該只有兩個可能的值:「XYZ」和「ABC」,所以我做了:SQL,約束CHECK
CREATE TABLE table(
type varchar(12) NOT NULL,
CHECK (type = 'XYZ' or type = 'ABC');
但是當我測試和像234或「約翰」插入值它的工作,並且不返回任何錯誤。我認爲它不應該插入價值'約翰',是嗎?
我正在創建我的第一個mysql腳本,並希望創建一個'type'列的表。它應該只有兩個可能的值:「XYZ」和「ABC」,所以我做了:SQL,約束CHECK
CREATE TABLE table(
type varchar(12) NOT NULL,
CHECK (type = 'XYZ' or type = 'ABC');
但是當我測試和像234或「約翰」插入值它的工作,並且不返回任何錯誤。我認爲它不應該插入價值'約翰',是嗎?
的MySQL does not support檢查約束:
The CHECK clause is parsed but ignored by all storage engines.
因此,儘管check
聲明不給一個錯誤,它忽略。
+1不錯,比檢查限制靈活一點,但適合OP的問題 – Andomar
我之前使用過ENUM,但我只是感興趣的是我是否也可以使用CHECK,以及如何做到這一點。但也謝謝 –
哈。在MySQL中似乎有很多類似的東西。語法它可以讓你編寫它實際上沒有做任何事情。我寧願它默認情況下很吵,並說當事情不會做任何事時。 – theon
@theon:你可以隨時升級到PostgreSQL;) –
@a_horse_with_no_name:D我們在兩個工作地點都使用,所以我可以同樣地抱怨它們。 – theon