-- 建表
CREATE TABLE test (id INT, name VARCHAR(20));
-- 加主鍵(隱含約束名 PRIMARY)
ALTER TABLE test ADD CONSTRAINT pk_test PRIMARY KEY (id);
-- 嘗試用約束名刪除(報錯)
ALTER TABLE test DROP CONSTRAINT pk_test; -- Error 1064
-- 正確語法
ALTER TABLE test DROP PRIMARY KEY; -- 成功
MySQL 不支援標準 SQL 的 DROP CONSTRAINT constraint_name 語法(MariaDB 10.2+ 已支援)。MySQL 將主鍵視為特殊索引,刪除主鍵專用語法為 DROP PRIMARY KEY。
ALTER TABLE tbl_name
DROP PRIMARY KEY -- 刪除主鍵
| DROP INDEX index_name -- 刪除普通/唯一索引
| DROP FOREIGN KEY fk_symbol -- 刪除外鍵 (需指定外鍵符號名)
| DROP COLUMN col_name -- 刪除欄位
-- 沒有 DROP CONSTRAINT constraint_name
SHOW CREATE TABLE test;
SHOW INDEX FROM test;
SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_NAME='test';
CONSTRAINT fk_order_user FOREIGN KEY (uid) REFERENCES user(id),外鍵刪除時需用該符號名。DROP PRIMARY KEY,PostgreSQL/Oracle/SQL Server 支援 DROP CONSTRAINT。