我有這樣的觸發器:MYSQL觸發了默認值的屬性
USE `PalestraDB`;
DELIMITER $$
CREATE TRIGGER `Lezione_BINS` BEFORE INSERT ON `Lezione` FOR EACH ROW
SET NEW.Codice_Lezione = (SELECT max(Codice_Lezione) + 1 FROM Lezione WHERE CodCorso = NEW.CodCorso);
END
定義在此表:
DROP TABLE IF EXISTS `PalestraDB`.`Lezione` ;
CREATE TABLE IF NOT EXISTS `PalestraDB`.`Lezione` (
`CodCorso` INT NOT NULL,
`Codice_Lezione` INT NOT NULL DEFAULT 0,
`Data` DATE NOT NULL,
`Orario` TIME NOT NULL,
PRIMARY KEY (`Codice_Lezione`, `CodCorso`),
INDEX `fk_Lezione_Corso1_idx` (`CodCorso` ASC),
CONSTRAINT `fk_Lezione_Corso1`
FOREIGN KEY (`CodCorso`)
REFERENCES `PalestraDB`.`Corso` (`Codice_corso`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB;
我想要做的就是計算「Codice_lezione」價值的基礎上,主鍵「CodCorso」,並有這樣的事情:
CodCorso 1 Codice_Lezione 1;
CodCorso 1 Codice_Lezione 2;
CodCorso 1 Codice_Lezione 3;
CodCorso 2 Codice_Lezione 1;
CodCorso 2 Codice_Lezione 2;
CodCorso 3 Codice_Lezione 1;
CodCorso 3 Codice_Lezione 2;
等等......這工作正常,沒有默認值,如果我只添加到Codice_Lezione列,新的數字將以正確的方式計算。 但如果我再添當然當然(CodCorso代表的數量當然,Codice_Lezione過程中的教訓的數量),我沒有任何價值發現MAX(Codice_Lezione),它會給我一個錯誤。所以我想「我會把它默認爲1」。通過這種方式,先插入的工作,我得到CodCorso#和Codice_Lezione 1.第二個,雖然失敗了,給我的錯誤1062,說是關鍵#-1心病CodCorso-Codice_lezione已經存在。 (默認爲0,不同)
那麼,怎樣才能使這項工作?