1. ホーム
  2. sql

[解決済み] SQL Serverでenumを作成する

2022-03-01 01:26:13

質問

MySQL では、このような enum を作成することができます。

USE WorldofWarcraft;

CREATE TABLE [users]
(
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   username varchar(255),
   password varchar(255),
   mail varchar (255),
   rank  ENUM ('Fresh meat', 'Intern','Janitor','Lieutenant','Supreme being')DEFAULT 'Fresh meat',
);

これはSQL Serverでは不可能です。では、その代わりとなるものは何でしょうか?

この投稿を読みました

SQL Server と MySQL の enum データ型は同じですか?

のようなものを提案する。

mycol VARCHAR(10) NOT NULL CHECK (mycol IN('Useful', 'Useless', 'Unknown'))

どのようにしたら、その仕事を得ることができ、デフォルト値を作成することができるのでしょうか?


enum の目的は、ユーザーに値を提示するサイト上のグラフィカルなドロップダウンと結びつけることができ、デフォルト値があらかじめ指定されていることです。

どのように解決するのですか?

モデルを適切に正規化するのがよいでしょう。

create table user_rank
(
   id integer primary key, -- no identity, so you can control the values
   rank varchar(20) not null unique
);

insert into user_rank (id, rank)
values
  (1, 'Fresh Meat'),
  (2, 'Intern'),
  (3, 'Janitor'),
  (4, 'Lieutenant'),
  (5, 'Supreme being');

CREATE TABLE [users]
(
   ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
   username varchar(255),
   password varchar(255),
   mail varchar (255),
   rank integer not null default 1, 
   constraint fk_user_rank foreign key (rank) references user_rank (id)
);

Web サイトのドロップダウンを簡単に入力できるようにするには、以下のようにクエリを実行します。 user_rank テーブルを使用します。