我希望主键获取00000到99999范围内的字符串值。任何想法如何在MySQL中编写约束?
CREATE TABLE car_spares(
spare_code CHAR(5) NOT NULL,
name VARCHAR(15),
description VARCHAR(200),
PRIMARY KEY (spare_code)
)
由于
答案 0 :(得分:0)
尝试检查,例如
create table car_spares(
spare_code CHAR(5) NOT NULL CHECK ((spare_code >= '00000') and (spare_code <= '99999')),
...
要小心,确切的语法取决于数据库,例如它可能是
create table car_spares(
spare_code CHAR(5) NOT NULL,
...
CONSTRAINT spare_code_cons CHECK ((spare_code >= '00000') and (spare_code <= '99999'))
)
答案 1 :(得分:0)
基本上:
CREATE TABLE car_spares (
spare_code CHAR(5) NOT NULL,
CONSTRAINT chkCode CHECK (sparecode >= '00000' AND sparecode <= '99999')
);
答案 2 :(得分:0)
在其他平台上,您将使用检查约束。但是MySQL doesn't enforce check constraints。
CHECK子句被解析但被所有存储引擎忽略。
您可以使用触发器,也可以使用表和外键引用。
例如
create table spare_codes (
spare_code char(5) not null,
primary key (spare_code)
);
insert into spare_codes values
('00000'), ('00001'), ... ('99999');
然后
CREATE TABLE car_spares(
spare_code CHAR(5) NOT NULL,
name VARCHAR(15),
description VARCHAR(200),
PRIMARY KEY (spare_code),
foreign key (spare_code) references spare_codes (spare_code)
);
有很多方法可以生成这些代码 - 电子表格,脚本语言等。