-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

他のプラットフォームでは、チェック制約を使用します。しかし、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 に答える
0

CHECKを試してください。

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 に答える