Computer >> Máy Tính >  >> Lập trình >> MySQL

Loại bỏ ràng buộc duy nhất khỏi bảng MySQL?

Đầu tiên, chúng ta hãy tạo một bảng với ràng buộc DUY NHẤT. Nó gợi ý rằng chúng ta không thể thêm các giá trị trùng lặp.

Tạo bảng.

mysql> create table UniqueConstraintDemo
   -> (
   -> Name varchar(200) unique
   -> );
Query OK, 0 rows affected (1.05 sec)

Bây giờ, chúng ta có thể kiểm tra xem bảng có ràng buộc UNIQUE hay không với sự trợ giúp của lệnh DESC. Truy vấn như sau.

mysql> DESC UniqueConstraintDemo;

Sau đây là kết quả.

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| Name  | varchar(200) | YES  | UNI | NULL    |       |
+-------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)

Bây giờ, chúng tôi có ràng buộc duy nhất trên cột "Tên". Do đó, chúng tôi không thể thêm các giá trị trùng lặp. Nếu chúng tôi cố gắng chèn cùng một giá trị hai lần thì chúng tôi sẽ gặp lỗi. Truy vấn để chèn bản ghi như sau.

mysql> insert into UniqueConstraintDemo values('John');
Query OK, 1 row affected (0.54 sec)

mysql> insert into UniqueConstraintDemo values('John');
ERROR 1062 (23000): Duplicate entry 'John' for key 'Name'

Nhìn vào Lỗi 1062 ở trên. Nó gợi ý rằng chúng tôi đã thử thêm các giá trị trùng lặp vào một cột có ràng buộc DUY NHẤT.

Bây giờ chúng ta hãy xem cú pháp để loại bỏ ràng buộc DUY NHẤT.

DROP index yourColumnName on yourTableName;

Áp dụng cú pháp trên để loại bỏ ràng buộc duy nhất.

mysql> DROP index Name on UniqueConstraintDemo;
Query OK, 0 rows affected (0.39 sec)
Records: 0  Duplicates: 0  Warnings: 0

Bây giờ chúng ta có thể kiểm tra xem ràng buộc UNIQUE đã được gỡ bỏ hay chưa với sự trợ giúp của lệnh DESC. Truy vấn như sau -

mysql> DESC UniqueConstraintDemo;

Sau đây là kết quả hiển thị mà chúng tôi đã loại bỏ thành công ràng buộc UNIQUE.

+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| Name  | varchar(200) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)