2013-06-19 6 views
-1

Я бы хотел, чтобы первичный ключ принимал значение символьной строки в диапазоне от 00000 до 99999. Любая идея, как я могу написать ограничение в MySQL?Ограничение диапазона значений первичного ключа

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

Благодаря

+0

КАКИХ DB двигателя вы используете ? –

ответ

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

Есть много способов для получения этих кодов - электронные таблицы, языков сценариев и т.д.

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')) 
) 
0

В основном:

CREATE TABLE car_spares (
    spare_code CHAR(5) NOT NULL, 
    CONSTRAINT chkCode CHECK (sparecode >= '00000' AND sparecode <= '99999') 
); 
Смежные вопросы