Tôi đã tạo chúng, nhưng tôi đã quên chúng là cái gì.Làm cách nào để hiển thị các ràng buộc duy nhất của bảng trong MySQL?
Tôi chỉ muốn
- hiển thị chúng.
- xóa tất cả các ràng buộc trên bảng.
Tôi đã tạo chúng, nhưng tôi đã quên chúng là cái gì.Làm cách nào để hiển thị các ràng buộc duy nhất của bảng trong MySQL?
Tôi chỉ muốn
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_SCHEMA = 'mysql'
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where table_name = 'table_name' and constraint_type = 'UNIQUE';
này không sản xuất ra thanh lịch nhưng rất dễ dàng để nhớ:
SHOW CREATE TABLE table_name;
Các OP hỏi cho một bảng duy nhất, mà điều này sẽ làm.
Bên cạnh đó, loại bỏ các where
khoản cuối cùng sẽ hiển thị tất cả các cột trong một cơ sở dữ liệu được bảo vệ bởi ràng buộc duy nhất:
SELECT
CONSTRAINT_NAME,
TABLE_NAME,
COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE
CONSTRAINT_NAME LIKE 'UNIQ%'
AND TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name';
Thật không may mysql không tạo điều kiện cho việc loại bỏ các chỉ số dựa trên một kết quả truy vấn. Bạn có thể thực thi đầu ra của truy vấn sau để xóa tất cả các cột duy nhất trong 2 truy vấn:
SELECT CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' DROP INDEX ',
CONSTRAINT_NAME,
'; -- drops ',
COLUMN_NAME,
' constraint'
)
FROM information_schema.KEY_COLUMN_USAGE
WHERE
CONSTRAINT_NAME LIKE 'UNIQ%'
AND TABLE_SCHEMA = 'your_database_name';