对SQL来说真的很新。我有一些问题想出一个约束'
这就是我想做的事。我有一个包含2列CampusID
和Location
的表格。我想要一个约束,CampusID
的每个元素必须是' UMS'后跟两位数字。不知道如何编码。这就是我所做的。我正在使用SQL Fiddle来做到这一点。
CREATE TABLE IF NOT EXISTS Campuses(
CampusID varchar(16) Primary Key,
Location varchar(16) NOT NULL,
CONSTRAINT CampusID Check CampusID LIKE (UMS[0-9]0-9]),
);
INSERT INTO Campuses VALUES
(“UMS01”,“Augusta”),
(“UMS02”,“Farmington”),
(“UMS03”,“Fort Kent”),
(“UMS04”,“Machais”),
(“UMS05”,“Orono”),
(“UMS06”,“Presque Isle”),
(“UMS07”,“Southern Maine”);
答案 0 :(得分:1)
MySQL实际上并没有实现检查约束。它确实在语法上接受它们,但它忽略了它们。
几乎所有其他数据库都支持它们。对于您的表,语法如下:
CREATE TABLE Campuses (
CampusID varchar(16) Primary Key,
Location varchar(16) NOT NULL,
CONSTRAINT CampusID Check (CampusID LIKE 'UMS__')
);
注意:这是UMS之后的两个字符。两位数字取决于数据库。对于Postgres,您可以使用(CampusID REGEXP '^UMS[0-9][0-9]$')
。
Here是使用Postgres的SQL小提琴。
注意:
serial
)。LIKE
模式需要用单引号括起来。check
约束表达式需要括在括号中。