當其中一個字段爲True時,我想在3個字段中添加一個UNIQUE INDEX。即等於1當一個字段等於某個值時,3個字段上的Mysql UNIQUE INDEX
UNIQUE INDEX pkg_box_delivered(package_id,box_id,delivered)WHERE delivered = 1;
我需要一個Alter語句以及如何將它添加到Create Table語句中。無論其價值只在所有的表中的行 -
當其中一個字段爲True時,我想在3個字段中添加一個UNIQUE INDEX。即等於1當一個字段等於某個值時,3個字段上的Mysql UNIQUE INDEX
UNIQUE INDEX pkg_box_delivered(package_id,box_id,delivered)WHERE delivered = 1;
我需要一個Alter語句以及如何將它添加到Create Table語句中。無論其價值只在所有的表中的行 -
不能創建在在一個表中的行的一些指數。
我需要一個ALTER語句,以及如何將它添加到CREATE TABLE語句
你使用ALTER TABLE來改變現有表的定義,而CREATE TABLE創建表和它的領域,因此,如果表中已經存在....
ALTER TABLE yourtablename
ADD UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered);
,或者如果它不存在....
CREATE TABLE yourtablename (
package_id INT NOT NULL,
box_id INT NOT NULL,
delivered BOOLEAN,
...
UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered)
);
正如您不能有選擇地將索引應用於某些行一樣,您無法選擇性地應用唯一約束。你需要添加一個觸發器來執行此操作。
要清楚,你想強制執行一個限制,即沒有兩個記錄的'package_id'和'box_id'具有相同的值 - 但只有'deliver = 1'的地方? – eggyal