SORU
21 Ocak 2010, PERŞEMBE


Kaldırmak MySQL Birincil Anahtar

Hangi şema haritalar canlı bir MySQL veritabanı izinleri için user_customers Aşağıdaki tablo var:

mysql> describe user_customer_permission;
 ------------------ --------- ------ ----- --------- ---------------- 
| Field            | Type    | Null | Key | Default | Extra          |
 ------------------ --------- ------ ----- --------- ---------------- 
| id               | int(11) | NO   | PRI | NULL    | auto_increment |
| user_customer_id | int(11) | NO   | PRI | NULL    |                |
| permission_id    | int(11) | NO   | PRI | NULL    |                |
 ------------------ --------- ------ ----- --------- ---------------- 
3 rows in set (0.00 sec)

User_customer_id için birincil anahtarları ve ve kimliği birincil anahtar permission_id korumak istiyorum.

Komutu çalıştırdığımda:

alter table user_customer_permission drop primary key;

Aşağıdaki hatayı alıyorum:

ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

Nasıl bir sütun birincil anahtar bırakabilir miyim?

CEVAP
21 Ocak 2010, PERŞEMBE


Bir dizin olmaksızın, otomatik artış bir sütun bakımı çok pahalı olur, o MySQL otomatik artış bir sütun dizin en soldaki bir parçası olmayı gerektirir.

Anahtar bırakarak önce otomatik artış özelliğini kaldırmanız gerekir:

ALTER TABLE user_customer_permission MODIFY id INT NOT NULL;
ALTER TABLE user_customer_permission DROP PRIMARY KEY;

Her üç sütun kapsayan PRIMARY KEY kompozit var id benzersiz olmasını garanti edilmez unutmayın.

Eğer benzersiz olmak öyle bir şey olursa, PRIMARY KEY ve AUTO_INCREMENT tekrar yapabilirsiniz:

ALTER TABLE user_customer_permission MODIFY id INT NOT NULL PRIMARY KEY AUTO_INCREMENT;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • case LianLi

    case LianLi

    28 Mayıs 2010
  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • LinusTechTips

    LinusTechTip

    25 Kasım 2008