我有以下表設置:複合主鍵其中一個字段是DATETIME數據類型
CREATE TABLE IF NOT EXISTS `appointment` (
`idappointment` int(11) NOT NULL AUTO_INCREMENT,
`appdate` datetime NOT NULL,
`appnote` varchar(255) DEFAULT 'Please enter a relevant note',
`chair_idchair` int(11) NOT NULL,
PRIMARY KEY (`idappointment`,`chair_idchair`),
KEY `fk_appointment_chair_idx` (`chair_idchair`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;
爲appdate
字段的典型值是: 2013-07-05 08:30:00
和 2013-07-05 09:00:00
所以沒有時間戳的值和所有約會不同於固定的時間間隔。
對於我的應用程序需要以確保沒有單個椅子是在相同的時間間隔的雙預訂,爲此我認爲產生由所述appdate
字段的複合主鍵和chair_idchair
字段,然後設定該複合初級的唯一的關鍵。
我的問題是如何在MySQL中做到這一點,更重要的是,它確實是確保從數據庫方面不能預訂雙重預訂的最佳方法。我不想只依靠應用程序來執行此檢查,因爲用戶將同時從多個位置預訂。
乾杯,只是一個側面說明:「然後設置此複合主鍵唯一」 - 主鍵是唯一的定義。 (只是爲了好奇的谷歌。) –