-1

我希望主键取 00000 到 99999 范围内的字符串值。知​​道如何在 MySQL 中编写约束吗?

CREATE TABLE car_spares(
spare_code CHAR(5) NOT NULL,
name VARCHAR(15),
description VARCHAR(200),
PRIMARY KEY (spare_code)
)

谢谢

4

3 回答 3

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'))
)
于 2013-06-19T16:24:04.670 回答
0

基本上:

CREATE TABLE car_spares (
   spare_code CHAR(5) NOT NULL,
   CONSTRAINT chkCode CHECK (sparecode >= '00000' AND sparecode <= '99999')
);
于 2013-06-19T16:24:26.503 回答
0

在其他平台上,您将使用检查约束。但MySQL 不强制检查约束

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)
);

有很多方法可以生成这些代码——电子表格、脚本语言等。

于 2013-06-19T16:26:18.183 回答