MySQL loại bỏ ràng buộc

Ràng buộc FOREIGN KEY, giống như các ràng buộc cơ sở dữ liệu khác, đảm bảo tính chính xác và độ tin cậy của dữ liệu. Nó ngăn việc xóa dữ liệu khỏi bảng được tham chiếu, điều này có thể gây ra lỗi và không chính xác

Nhưng đôi khi chúng ta cần vô hiệu hóa ràng buộc khóa ngoại tạm thời hoặc vĩnh viễn, chẳng hạn như khi cắt bớt một bảng hoặc xóa các giá trị cột

Làm cách nào bạn có thể vô hiệu hóa ràng buộc khóa ngoại trong MySQL?

Giải pháp

Có nhiều cách để vô hiệu hóa ràng buộc khóa ngoài trong MySQL

Vô hiệu hóa cho các bảng cụ thể

Nếu bạn muốn vô hiệu hóa ràng buộc khóa ngoại cho các bảng cụ thể, bạn có thể sử dụng câu lệnh DISABLE_KEYS. Chạy lệnh sau sau khi thay thế table_name bằng tên bảng của bạn

ALTER TABLE table_name DISABLE KEYS;

Khi bạn đã thực hiện các thao tác được yêu cầu, bạn có thể bật lại kiểm tra khóa ngoại bằng cách chạy lệnh sau

ALTER TABLE table_name ENABLE KEYS;

Vô hiệu hóa cho tất cả Cơ sở dữ liệu và Bảng

Nếu bạn muốn tắt kiểm tra khóa ngoại trên tất cả các cơ sở dữ liệu và bảng, bạn có thể sử dụng câu lệnh FOREIGN_KEY_CHECKS. Trong MySQL của bạn thực hiện lệnh sau

SET FOREIGN_KEY_CHECKS=0;

Bạn có thể kích hoạt lại ràng buộc bằng lệnh sau

SET FOREIGN_KEY_CHECKS=1;

Vô hiệu hóa vĩnh viễn

Bạn có thể muốn thay đổi vĩnh viễn hành vi của khóa ngoại. Ví dụ: bạn có thể yêu cầu khi xóa một bản ghi, khóa ngoại trong các bảng phụ thuộc phải được đặt thành

ALTER TABLE table_name ENABLE KEYS;
0

Ràng buộc duy nhất cho phép bạn thực thi tính duy nhất của bản ghi trong bảng cơ sở dữ liệu của mình và duy trì tính toàn vẹn của cơ sở dữ liệu. Dưới đây là cách loại bỏ ràng buộc duy nhất khỏi bảng MySQL bằng lệnh MySQL DROP INDEX. Nó cũng được sử dụng để xóa khóa duy nhất trong MySQL

 

Ràng buộc duy nhất trong MySQL là gì?

Ràng buộc duy nhất cho một bảng là sự kết hợp của một hoặc nhiều trường xác định duy nhất từng bản ghi trong bảng. Các trường này có thể chứa giá trị null miễn là sự kết hợp của các giá trị trường là duy nhất

Phần thưởng đọc. RÀNG BUỘC KHÓA NGOÀI

 

Cách loại bỏ ràng buộc duy nhất trong MySQL

Dưới đây là các bước để loại bỏ ràng buộc duy nhất trong MySQL. Chúng tôi sẽ sử dụng truy vấn MySQL DROP INDEX để xóa chỉ mục hiện có khỏi bảng

Đây là cú pháp của lệnh DROP INDEX trong MySQL

DROP INDEX constraint_name ON table_name
[algorithm_option | lock_option];

Trong truy vấn trên, constraint_name là tên của ràng buộc và table_name là tên bảng cơ sở dữ liệu của bạn

Xin lưu ý, cho dù bạn muốn DROP INDEX hay DROP UNIQUE CONSTRAINT, bạn cần sử dụng truy vấn DROP INDEX

 

Phần thưởng đọc. MySQL DROP CƠ SỞ DỮ LIỆU

 

Bạn cũng có thể cung cấp 2 đối số tùy chọn – algorithm_option và lock_option

algorithm_option có thể có một trong 3 giá trị - mặc định, tại chỗ, sao chép. Tùy thuộc vào đối số của bạn, MySQL sẽ sử dụng các thuật toán khác nhau để loại bỏ ràng buộc duy nhất

Cú pháp của nó là

ALGORITHM [=] {DEFAULT|INPLACE|COPY}
  • mặc định - Điều này có tác dụng tương tự như việc không sử dụng đối số algorithm_option
  • sao chép – Bảng mà bạn cần xóa ràng buộc, sẽ được sao chép và chỉ mục sẽ bị xóa khỏi bảng sao chép. Trong thời gian này, các thao tác đồng thời như INSERT và UPDATE không được phép
  • tại chỗ - Trong trường hợp này, bảng được xây dựng lại tại chỗ mà không bị ràng buộc. Mặc dù tùy chọn này cho phép các hoạt động đồng thời, nhưng nó đặt khóa siêu dữ liệu trong khi thực hiện

Tùy thuộc vào lock_option, MySQL sẽ khóa/không khóa quyền truy cập đọc/ghi vào các bảng của bạn trong khi ràng buộc đang bị xóa. lock_option có cú pháp sau

LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}

Nó nhận 4 giá trị

  • mặc định - nó cho phép đồng thời tối đa cho lựa chọn thuật toán của bạn. nó cho phép cả đọc và ghi đồng thời nếu được hỗ trợ. Nếu không, nó chỉ cho phép đọc đồng thời. Nếu điều đó cũng không được hỗ trợ, nó sẽ thực thi quyền truy cập độc quyền
  • không - nếu được hỗ trợ, thì bạn có thể đọc và ghi đồng thời. Mặt khác, MySQL báo lỗi
  • chia sẻ – nếu tùy chọn chia sẻ được hỗ trợ, bạn có thể đọc đồng thời nhưng không ghi đồng thời
  • độc quyền - tùy chọn này thực thi quyền truy cập độc quyền

Phần thưởng đọc. MySQL DROP CỘT

 

MySQL DROP UNIQUE CONSTRAINT ví dụ

Giả sử bạn có bảng sau với ràng buộc duy nhất

________số 8_______

 

Đây là truy vấn SQL để loại bỏ tên ràng buộc duy nhất khỏi các đơn đặt hàng của bảng

mysql> DROP INDEX name ON orders;

Phần thưởng đọc. BẢNG THẢ MySQL

 

MySQL DROP PRIMARY KEY Chỉ mục

Vì khóa chính cũng là một ví dụ về ràng buộc duy nhất trên bảng, nên đây là cú pháp để loại bỏ ràng buộc khóa chính đối với thứ tự bảng