Mysql
當一個已經存在mysql8時如何更改列以使其成為主鍵?
id | bigint unsigned | NO | PRI | NULL | auto_increment | | title | varchar(255) | NO | | NULL | | | category | varchar(255) | NO | | NULL | | | summary | varchar(10000) | NO | | NULL | | | detail | mediumtext | NO | | NULL | | | created_at | timestamp | YES | | NULL | | | updated_at | timestamp | YES | | NULL | | | image | mediumblob | YES | | NULL | | | image1 | mediumblob | YES | | NULL | | | image3 | mediumblob | YES | | NULL | | | phold | varchar(50) | NO | | NULL | | +------------+-----------------+------+-----+---------+----------------+
我現在有這個數據庫,我想與另一個表建立一對一的關係,我使用列
( title )
來連結特定數據。當我跑mysql> alter table tours add primary key (id,title);
或者
mysql> alter table tours add constraint pk_tours primary key (id, title);
錯誤:
ERROR 1068 (42000): Multiple primary key defined
在這兩個查詢上。
我想要另一個名為 itinery 的表,我用它與前一個表在 volumn title 的幫助下連結;
我正在使用 mysql 8 和 laravel 8。謝謝
如果您想讓其他表僅引用該
title
欄位,則可以添加UNIQUE
索引。首先,編輯
tours
表以NOT NULL
向欄位添加約束title
:ALTER TABLE `tours` MODIFY `title` VARCHAR(255) NOT NULL;
現在您可以創建索引:
CREATE UNIQUE INDEX `udx_title` ON `tours` (`title`);
在執行此操作之前,請務必確認其中的所有值
title
都是唯一的。完成後,您將能夠讓其他表引用該欄位。向 Vérace 致敬,因為他指出這
title
可能是NULL
我們不想要的。