检查约束/触发

时间:2018-04-05 23:31:49

标签: mysql sql database check-constraints

我正在尝试在创建表时对列进行约束,即我希望'numberOfNights'被限制为> = 1且< = 3。我无法上班;我想我可能需要一个触发器,但我不确定。我感到困惑的部分原因是因为我在同一个数据库中创建了一个前一个表时使用了CHECK约束(也使用了相同的语法)并且成功了,但对于我的新表却没有。这就是我遇到的问题:

CREATE TABLE city_CC (
   cityName VARCHAR(255) PRIMARY KEY,
   tourID INT, FOREIGN KEY REFERENCES tour_CC(tourID),
   hotelName VARCHAR(25) NOT NULL,
   numberOfNights INT CHECK(numberOfNights >=1 AND <=3)
);

我之前的另一个表似乎有用的例子是:

CREATE TABLE tour_CC (
   tourID INT NOT NULL AUTO_INCREMENT,
   tourTitle VARCHAR(15) NOT NULL,
   cost DECIMAL(6,2) DEFAULT 2000.00
   CHECK (cost>=1500.00 AND cost<=2500.00)
);

为什么CHECK约束在tour_CC表中工作而在city_CC表中没有相同的语法?如果我需要一个触发器与city表,那么为什么巡回表不需要一个?

感谢您提前阅读和提供任何帮助。

1 个答案:

答案 0 :(得分:1)

MySQL接受check约束的语法,但实际上没有进行检查。

如果您确实想要检查值,则需要使用触发器。