我不是那麼喜歡數據庫,我有以下問題相關的字段可以有一組值。我正在使用MySql。如何指定表中的某個字段只能從一組特定值中獲取值?
我有這個DDL表定義:
CREATE TABLE actors (
id BigInt(20) UNSIGNED NOT NULL AUTO_INCREMENT,
sample_id VarChar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`role` Char(2) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
wiews VarChar(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
pid VarChar(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
`name` VarChar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
address VarChar(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
country Char(3) CHARACTER SET latin1 COLLATE latin1_swedish_ci,
PRIMARY KEY (
id
)
) ENGINE=InnoDB AUTO_INCREMENT=1 ROW_FORMAT=COMPACT DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
ALTER TABLE actors COMMENT = '';
ALTER TABLE actors ADD CONSTRAINT fk_actors_pgrfas FOREIGN KEY (sample_id)
REFERENCES pgrfas (sample_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
,因爲是由應用程序使用我不能改變這些字段的類型。
有人爲我提供一個規範,指出作用場(即必須是一個CHAR(2))可以採取只在此設定值:IN(「公關」,「合作」 ,'br')。
如何在前面的DDL聲明中指定該字段只能包含這3個值中的一個?
這絕對是正確的解決方案,但是OP聲明他不能更改表格定義。 –
然後OP可以檢查插入/更新服務器端或存儲過程 – scaisEdge
然而,賦值爲2的char值不會改變在其他應用程序中使用的數據類型。 – scaisEdge