この列のUNIQUE制約が存在する場合は、(指定された表名に対して)インジケータ付き列のリストを表示する必要があります。ただし、この列がSINGLE COLUMN制約の場合のみこの列は複数の列制約の一部です。このテーブルの例singl UNIQUE制約インジケータを持つMySQLの列名
:
CREATE TABLE IF NOT EXISTS `prices` (
`priceId` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`motorcycleId` INT UNSIGNED NOT NULL,
`priceDatum` DATE NOT NULL,
`price` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`priceId`),
INDEX `price_motorcycleId_fk_idx` (`motorcycleId` ASC),
UNIQUE INDEX `priceId_UNIQUE` (`priceId` ASC),
UNIQUE INDEX `price_UNIQUE` (`motorcycleId` ASC, `priceDatum` ASC),
CONSTRAINT `price_motorcycleId_fk`
FOREIGN KEY (`motorcycleId`)
REFERENCES `motorcycles` (`motorcycleId`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
このクエリは与える必要があります。そのような制約が存在する場合
COLUMN |UNIQUE
============+======
priceId | Y
motorcycleId| N <-- should not be shown as UNIQUE since not single constraint
priceDatum | N <-- should not be shown as UNIQUE since not single constraint
price | N
サイドノートでは、ユニーク制約は、priceIdに冗長です。 –
あなたの注意のために@ Michael-sqlbotをありがとう、それは貴重です。私はこれが冗長であることを知っていますが、例のためにここに入れています。私は最近それについて議論していました(https://stackoverflow.com/questions/47493487/mysql-primary-key-vs-unique-constraintsをご覧ください) – sbrbot