LoginSignup
0
0

ユニーク制約について

Last updated at Posted at 2023-10-30

環境

mysql 5.7
laravel 8.75

ユニークとは?

たとえば、ログイン機能を作ります。
emailカラムは他のユーザーと重複することを禁止したいです。

その時!emailにユニーク制約をかけることで
emailカラムは重複値を許容しなくなります。

Mysql Raw Sqlでユニークをかける方法(usersテーブルを作成する時にかける場合)

CREATE TABLE users (
	email varchar(50) UNIQUE,
    ...
)

Mysql Raw Sqlでユニークをかける方法(既にusersテーブルがある場合)

ALTER TABLE テーブル名
ADD カラム名 タイプ UNIQUE

Laravelのマイグレーションでユニーク制約をかける方法(usersテーブルを作成する時にかける場合)

image.png (95.4 kB)

ユニークにしたいカラム->unique()を指定すればOK。

Laravelのマイグレーションでユニーク制約をかける方法(既にusersテーブルがある場合)

스크린샷 2023-10-30 오전 11.20.59.png (74.2 kB)

もっと条件を入れたい場合

たとえば、部署が違う人のであれば、同じemailアドレスを許容したい!
どうすればいいでしょうか。

二つのカラムにそれぞれユニークをかける?
そうなると部署が同じユーザーは作れなくなりますね。

ユニーク制約には複数のカラムを登録することができます。
コードで見ると
image.png (6.8 kB)
このようにです。

このように複数のカラムにユニーク制約をかけることを
複合ユニーク(Composite Unique)と言います。

今回の例で言うと(部署、メールアドレス)ペアが同じ値だと許容しないことになります。
これで部署が違う場合同じメールアドレスでも会員登録ができるようになります。

3つのカラムで複合ユニークを登録すると、3つの値が全部同じ場合許容しなくなることになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0