MySQL tablosundan benzersiz kısıtlama bırakma


Yanıtlar:


348

Benzersiz bir kısıtlama da bir endekstir.

İlk SHOW INDEX FROM tbl_nameolarak dizin adını bulmak için kullanın . Dizinin adı key_name, bu sorgunun sonuçlarında çağrılan sütunda saklanır .

Ardından DROP INDEX'i kullanabilirsiniz :

DROP INDEX index_name ON tbl_name

veya ALTER TABLE sözdizimi:

ALTER TABLE tbl_name DROP INDEX index_name

1
Üzgünüm efendim ben soruyu
sormadan

@Ankur Mukherjee: Bahsetmeyi unuttum: tbl_name ve index_name değerlerini sırasıyla gerçek tablonuzun adına ve gerçek dizininin adına değiştirmelisiniz. Adları MySQL Sorgu Tarayıcısında görebilirsiniz. Siz de yapabilirsiniz SHOW CREATE TABLE tbl_name.
Mark Byers

Hata İletisi: "SQL sözdiziminizde bir hata var; 1. satırda '(player_id, yıl, turnuva)' yakınında kullanılacak doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuzu kontrol edin"
Ankur Mukherjee

1
@Ankur Mukherjee: Benim önerdiğim yol bence bunu yapmanın en iyi yolu.
Mark Byers

1
Soruda phpMyAdmin kullanarak bir yerde okudum ... @systemovich tarafından verilen cevap kabul edilen olarak işaretlenmelidir.
Pere

123

Aşağıdaki tabloda gösterildiği gibi phpMyAdmin'i kullanarakDROP tablodan benzersiz bir kısıtlama yapabilirsiniz . Kanat açıklığı alanına benzersiz bir kısıtlama getirildi. Kısıtlamanın adı, bu örnekte alan adıyla aynıdır.

alternatif metin


34
Dizinler bölümünün varsayılan olarak daraltıldığını ve bölümün ekran görüntüsünde olduğu 12px yazı tipinde küçük, ince bir bağlantıyla genişletildiğini unutmayın. Ama senin sayende buldum. Yüzünü korusun. +1
Jack

11

Bir tabloya benzersiz bir anahtar kısıtlaması yerleştirebilen dizinler PRIMARYve UNIQUEdizinlerdir.

Bir sütundaki benzersiz anahtar kısıtlamasını kaldırmak, ancak dizini korumak için dizini türüyle kaldırabilir ve yeniden oluşturabilirsiniz INDEX.

Tüm tablolar için işaretlenmiş bir dizin bulundurmanın iyi bir fikir olduğunu unutmayın PRIMARY.


2
@Thomasrutter, benzersiz bir kısıtlamanın kaldırılmasının sorgu performansını olumsuz etkileyebileceği gerçeğine değindi - ve bu, UNIQUEdizini normal ile değiştirerek hafifletilebilir INDEX.
Alex

4

Phpmyadmin kullanarak UNIQUE kısıtlaması eklemek için, o tablonun yapısına gidin ve aşağıda bulun ve tıklayın,

resim açıklamasını buraya girin

BENZERSİZ kısıtlamayı aynı şekilde kaldırmak için, yapıya gidin ve Dizinler Sekmesi'ne kadar aşağı kaydırın ve aşağıyı bulun ve bırak'ı tıklayın, resim açıklamasını buraya girin

Umarım bu işe yarar.

Zevk almak ;)


bu çözüm tam da aradığım şeydi.
Aryeh Beitz

2

WAMP 3.0 için: 1 Sütun Ekle'nin altındaki Yapı'ya tıklayın '- Dizinler' seçeneğini göreceksiniz -İndeksler'i tıklayın ve istediğiniz dizini bırakın.


2

Mysql veritabanı tablosundan benzersiz kısıtlamaları kaldırmak istiyorsanız, drop index ile alter tablosunu kullanın.

Misal:

tablo oluşturma unique_constraints (unid int, etkinlik_adı varchar (100), CONSTRAINT activty_uqniue UNIQUE (etkinlik_adı), birincil anahtar (unid));

alter table unique_constraints drop index activty_uqniue;

Nerede activty_uqniue için EŞSİZ sınırlamadır ACTIVITY_NAME sütunda.


0

benzersiz anahtarı atarken dizini kullanırız

ALTER TABLE tbl
DROP INDEX  unique_address;

0

Kısıtlama sözdizimi ile kaldırılabilir:

TABLOYU DEĞİŞTİR

MySQL 8.0.19 itibariyle, ALTER TABLE, kısıtlama türünün sınırlama adından belirlendiği herhangi bir türdeki mevcut kısıtlamaları bırakmak ve değiştirmek için daha genel (ve SQL standardı) sözdizimine izin verir: ALTER TABLE tbl_name DROP CONSTRAINT symbol;

Misal:

CREATE TABLE tab(id INT, CONSTRAINT unq_tab_id UNIQUE(id));

-- checking constraint name if autogenerated
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'tab';

-- dropping constraint
ALTER TABLE tab DROP CONSTRAINT unq_tab_id;

db <> keman demosu


-3

benim tablo adı benzersiz bir kısıtlama sütun emp_id şimdi alıcılar iam emp_id düşecek olan alıcılar

1. adım: sp_helpindex alıcılarını yürütün, resim dosyasına bakın

2. adım: Dizin adresini kopyalayın

resim açıklamasını buraya girin

step3: tablo alıcıları bırakma kısıtlamasını değiştirir [UQ__buyers__1299A860D9793F2E] tablo değiştirme alıcıları bırakma sütunu emp_id

Not:

blockquote

Alıcılar yerine tablo isminizi değiştirin :)

blockquote

Bu tüm emp_id sütun adları ile kısıtlamalar bırakıldı!


-5
  1. İlk tabloyu sil

  2. SQL'e git

Bu kodu kullanın:

CREATE  TABLE service( --tablename 
  `serviceid` int(11) NOT NULL,--columns
  `customerid` varchar(20) DEFAULT NULL,--columns
  `dos` varchar(30) NOT NULL,--columns
  `productname` varchar(150) NOT NULL,--columns
  `modelnumber` bigint(12) NOT NULL,--columns
  `serialnumber` bigint(20) NOT NULL,--columns
  `serviceby` varchar(20) DEFAULT NULL--columns
)
--INSERT VALUES
INSERT INTO `service` (`serviceid`, `customerid`, `dos`, `productname`, `modelnumber`, `serialnumber`, `serviceby`) VALUES
(1, '1', '12/10/2018', 'mouse', 1234555, 234234324, '9999'),
(2, '09', '12/10/2018', 'vhbgj', 79746385, 18923984, '9999'),
(3, '23', '12/10/2018', 'mouse', 123455534, 11111123, '9999'),
(4, '23', '12/10/2018', 'mouse', 12345, 84848, '9999'),
(5, '546456', '12/10/2018', 'ughg', 772882, 457283, '9999'),
(6, '23', '12/10/2018', 'keyboard', 7878787878, 22222, '1'),
(7, '23', '12/10/2018', 'java', 11, 98908, '9999'),
(8, '128', '12/10/2018', 'mouse', 9912280626, 111111, '9999'),
(9, '23', '15/10/2018', 'hg', 29829354, 4564564646, '9999'),
(10, '12', '15/10/2018', '2', 5256, 888888, '9999');
--before droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  unique`modelnumber` (`modelnumber`),
  ADD  unique`serialnumber` (`serialnumber`),
  ADD unique`modelnumber_2` (`modelnumber`);
--after droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  modelnumber` (`modelnumber`),
  ADD  serialnumber` (`serialnumber`),
  ADD modelnumber_2` (`modelnumber`);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.