簡體   English   中英

如何制作不區分大小寫的約束?

[英]How to make case insensitive constraints?

如何對 varchar 設置不區分大小寫的約束。 因此,如果我插入了相同的dob但名稱是bobBob的位置,它們會被視為重復嗎?

CREATE TABLE customer(
  name varchar(32) NOT NULL,
  dob date NOT NULL,
  
  CONSTRAINT test_uq UNIQUE (LOWER(name), dob)
);

INSERT INTO customer (name, dob) VALUES('bob', '01/01/2020'); // This would work
INSERT INTO customer (name, dob) VALUES('Bob', '01/01/2020'); // This would not work because its a duplicate even though it Bob and not bob

使用不區分大小寫的排序規則定義列:

CREATE TABLE customer(
  name varchar(32) collate utf8_general_ci NOT NULL,
  dob date NOT NULL,
  unique (name, dob)
);

默認情況下,MySQL 不區分大小寫,因此我假設您的服務器或數據庫已將排序規則設置為區分大小寫的排序規則。

是一個 db<>fiddle。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM