Benzersiz Kısıtlama Yeni Bir Kayıt Eklemenizi Engellediğinde 4 Geçici Çözüm SQL Server

Şimdi paylaş:

Benzersiz kısıtlama nedeniyle bir tabloya yeni bir kayıt ekleyemediyseniz, bu makaleyi okumayı unutmayın. Bu sorunu çözmenize yardımcı olacaktır.

Bu yazıda, tablonun benzersiz kısıtlamasını ihlal ettiği için yeni bir kayıt ekleyemediğinizde sorunu çözmek için 4 yöntemi tanıtacağız. SQL Server.

Gerçek Bir Vaka:

Şimdi gerçek bir vaka görelim. “Product” adında bir veri tabanımız var ve “Product” adında bir tablomuz var.DataNumenÜrün” veritabanında. Tabloda sırasıyla "int" ve "varchar" veri türlerine sahip "ProductId" ve "ProductName" olmak üzere iki alan vardır. Ve "ProductId", benzersiz kısıtlamaya sahip bir birincil anahtardır.

Şu anda tabloda aşağıdaki gibi bazı kayıtlar var:Tablodaki Kayıtlar “DataNumenÜrün"

Şekil 1 Tablodaki Kayıtlar “DataNumenÜrün"

Veritabanı için Jim ve Tom gibi iki DBA olduğunu varsayarsak. Jim bir gün tablodaki ilk kaydı aşağıdaki gibi sildi:

DELETE FROM DataNumenProduct
WHERE ProductId=1;

İkinci gün Tom, silinen kayıtla aynı birincil anahtara sahip tabloya aşağıdaki gibi yeni bir kayıt ekledi:

INSERT INTO DataNumenProduct
VALUES(1,'DataNumen OutLook Repair');

Yani tablomuz aşağıdaki gibi aşağıdaki kayıtlara sahiptir:

Tablodaki Güncellenmiş Kayıtlar “DataNumenÜrün:% s"

Şekil 2 “Tablodaki Güncellenmiş Kayıtlar”DataNumenÜrün:% s"

Jim, silinen kaydı tabloya geri yüklemek isterse, birincil anahtarın "ProductId" benzersiz kısıtlamasını ihlal edecektir. Böyle bir durumda, sorunu çözmek için aşağıdaki geçici çözümlerden birini kullanabiliriz.

Geçici Çözüm 1: Çakışmayı Önlemek için Yeni Kaydın Birincil Anahtarını Değiştirin

Eklenecek kaydın birincil anahtarını, tablodaki mevcut tüm kayıtlardan farklı yeni bir değerle değiştirebiliriz. Yukarıdaki durumu örnek olarak ele alalım, eklenecek kayıt için birincil anahtar değerini 1'den 5'e değiştirebiliriz. Ardından, yeni oluşturulan kaydı aşağıdaki gibi tabloya geri yükleyebiliriz:

INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');

Tablodaki son kayıtlar aşağıdadır:Tablodaki Nihai Kayıtlar “DataNumen Ürün:% s"

Şekil 3 “Tablodaki Nihai Kayıtlar”DataNumen Ürün:% s"

Geçici Çözüm 2: Çakışmayı Önlemek için Mevcut Kaydın Birincil Anahtarını Değiştirin

  1. Öncelikle mevcut kaydın çakışmaya neden olabilecek birincil anahtar değerini aşağıdaki gibi güncellememiz gerekiyor:
UPDATE DataNumenProduct
SET ProductId = 6
WHERE ProductId = 1;

Tablodaki güncellenmiş kayıtlar aşağıdadır:

Tablodaki Güncellenmiş Kayıtlar “DataNumen Ürün:% s"

Şekil 4 “Tablodaki Güncellenmiş Kayıtlar”DataNumen Ürün:% s"

  1. Ardından, silinen kaydı aşağıdaki gibi tabloya geri yükleyebiliriz:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair ');

Şimdi aşağıdaki gibi son halini görelim:

Tablodaki Nihai Kayıtlar “DataNumen Ürün:% s"

Şekil 5 “Tablodaki Nihai Kayıtlar”DataNumen Ürün:% s"

Geçici Çözüm 3: Benzersiz Kısıtlama Temposunu Devre Dışı Bırakınrarily SQL üzerinden

  1. Problemi çözmek için tempo tablosundaki birincil anahtar kısıtlaması olan “pk”yi silebiliriz.raryani, aşağıdaki gibi:
ALTER TABLE DataNumenProduct
DROP CONSTRAINT pk;
  1. Ardından, silinen kaydı aşağıdaki gibi tabloya geri ekleyebiliriz:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Şimdi tablodaki kayıtları görelim:

Tablodaki Güncellenmiş Kayıtlar “DataNumen Ürün:% s"

Şekil 6 “Tablodaki Güncellenmiş Kayıtlar”DataNumen Ürün:% s"

  1. Ardından, iki kayıt aynı birincil anahtar değerlerine sahip olduğundan, çakışmayı önlemek için aşağıdaki gibi bunlardan birini değiştirmemiz gerekir:
UPDATE DataNumenProduct SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Son olarak, "pk" birincil anahtar kısıtlamasını aşağıdaki gibi tabloya geri ekliyoruz:
ALTER TABLE DataNumenProduct
ADD CONSTRAINT pk PRIMARY KEY(ProductId);

Şimdi tabloda aşağıdaki gibi bazı kayıtlar var:

Tablodaki Güncellenmiş İçerik “DataNumen Ürün:% s"

Şekil 7 “ Tablodaki Güncellenmiş İçerikDataNumen Ürün:% s"

Geçici Çözüm 4: Benzersiz Kısıtlama Temposunu Devre Dışı Bırakınrararacılığıyla SQL Server Yönetim Stüdyosu:

  1. İlk olarak tablodaki birincil anahtar kısıtlaması olan “pk”yi GUI aracılığıyla aşağıdaki gibi siliyoruz:

Birincil Anahtar Kısıtlaması "pk"yi GUI aracılığıyla silin

Şekil 8 Birincil Anahtar Kısıtlaması “pk”yi GUI aracılığıyla silin

  1. Daha sonra gerçek durumda silinen kaydı aşağıdaki gibi tabloya ekliyoruz.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Şimdi tabloda aşağıdaki gibi bazı kayıtlar var:

Tablodaki Güncellenmiş İçerik “DataNumen Ürün:% s"

Şekil 9 “ Tablodaki Güncellenmiş İçerikDataNumen Ürün:% s"

  1. Ardından, tablodaki mevcut kaydın birincil anahtar değerini aşağıdaki gibi değiştiririz:
UPDATE DataNumenProduct
SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Son olarak, birincil anahtar kısıtlaması olan "pk"yi GUI aracılığıyla aşağıdaki gibi tabloya geri ekliyoruz:GUI aracılığıyla Birincil Anahtar Kısıtlaması “pk”yi Geri Ekleyin

Şekil 8 GUI aracılığıyla Birincil Anahtar Kısıtlaması “pk”yi Geri Ekleyin

Çözmek SQL Server Veritabanı Bozulması

Benzersiz kısıtlamalar dışında, SQL Server rüşvet DBA'ları rahatsız eden çok yaygın bir sorundur. Normalde kullanabiliriz SQL Server bozulmaları çözmek için yerleşik komutlar. Ancak, işe yaramazlarsa, bazı üçüncü taraflara başvurabiliriz. SQL Server veri kurtarma araçları.

Yazar Tanıtımı:

Jim Hu, bir veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. Erişim onarımı ve dbf onarım yazılım ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com

Şimdi paylaş:

Yoruma kapalı.