4 Unikal Məhdudiyyət Yeni Qeyd Daxil etməyinizə mane olan zaman həll yolları SQL Server

İndi paylaş:

Əgər unikal məhdudiyyətə görə cədvələ yeni qeyd daxil edə bilmədinizsə, bu məqaləni oxumağı qaçırmayın. Bu problemi həll etməyə kömək edəcəkdir.

Bu yazıda, cədvəlin unikal məhdudiyyətini pozduğuna görə yeni bir qeyd daxil edə bilmədiyiniz zaman problemi həll etmək üçün 4 üsul təqdim edəcəyik. SQL Server.

Həqiqi bir vəziyyət:

İndi gəlin real hadisəyə baxaq. “Məhsul” adlı verilənlər bazamız var və “Məhsul” adlı bir cədvəl var.DataNumenMəhsul” məlumat bazasında. Cədvəldə müvafiq olaraq “int” və “varchar” məlumat növləri olan “ProductId” və “ProductName” olmaqla iki sahə var. Və "ProductId" unikal məhdudiyyəti olan əsas açardır.

Hal-hazırda cədvəldə aşağıdakı qeydlər var:Cədvəldəki qeydlər "DataNumenməhsul”

Şəkil 1 Cədvəldəki qeydlər "DataNumenməhsul”

Verilənlər bazası üçün iki DBA olduğunu fərz etsək, yəni Jim və Tom. Bir gün Cim cədvəldəki ilk qeydi aşağıdakı kimi sildi:

DELETE FROM DataNumenProduct
WHERE ProductId=1;

İkinci gün Tom cədvələ aşağıdakı kimi silinmiş qeydlə eyni əsas açarı olan yeni bir qeyd daxil etdi:

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

Beləliklə, cədvəlimizdə aşağıdakı qeydlər var:

Cədvəldə yenilənmiş qeydlər "DataNumenMəhsullar"

Şəkil 2 Cədvəldəki Yenilənmiş Qeydlər “DataNumenMəhsullar"

İndi Cim silinmiş qeydi yenidən cədvələ qaytarmaq istəsə, bu, "ProductId" əsas açarının unikal məhdudiyyətini pozacaq. Belə bir vəziyyətdə, problemi həll etmək üçün aşağıdakı həll yollarından birini istifadə edə bilərik.

Çözüm 1: Münaqişənin qarşısını almaq üçün Yeni Qeydin Əsas Açarını dəyişdirin

Daxil ediləcək qeydin əsas açarını cədvəldəki bütün mövcud qeydlərdən fərqli olan yeni dəyərə dəyişə bilərik. Yuxarıdakı işi nümunə kimi götürək, qeydin daxil edilməsi üçün biz əsas açar dəyərini 1-dən 5-ə qədər dəyişə bilərik. Sonra yeni yaradılan qeydi aşağıdakı kimi cədvələ bərpa edə bilərik:

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

Cədvəldəki son qeydlər aşağıdakılardır:Cədvəldəki son qeydlər "DataNumen Məhsullar"

Şəkil 3 Cədvəldəki yekun qeydlər “DataNumen Məhsullar"

Çözüm 2: Münaqişənin qarşısını almaq üçün mövcud qeydin əsas açarını dəyişdirin

  1. Birincisi, mövcud qeydin konfliktə səbəb ola biləcək əsas açar dəyərini aşağıdakı kimi yeniləməliyik:
UPDATE DataNumenProduct
SET ProductId = 6
WHERE ProductId = 1;

Aşağıda cədvəldə yenilənmiş qeydlər verilmişdir:

Cədvəldə yenilənmiş qeydlər "DataNumen Məhsullar"

Şəkil 4 Cədvəldəki Yenilənmiş Qeydlər “DataNumen Məhsullar"

  1. Sonra silinmiş qeydi aşağıdakı kimi yenidən cədvələ qaytara bilərik:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair ');

İndi aşağıdakı kimi son versiyaya baxaq:

Cədvəldəki son qeydlər "DataNumen Məhsullar"

Şəkil 5 Cədvəldəki yekun qeydlər “DataNumen Məhsullar"

Həll yolu 3: Unikal məhdudiyyəti müvəqqəti olaraq SQL vasitəsilə deaktiv edin

  1. Problemi həll etmək üçün cədvəldəki "pk" əsas açar məhdudiyyətini aşağıdakı kimi müvəqqəti olaraq silə bilərik:
ALTER TABLE DataNumenProduct
DROP CONSTRAINT pk;
  1. Sonra silinmiş qeydi aşağıdakı kimi cədvələ əlavə edə bilərik:
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

İndi cədvəldəki qeydlərə baxaq:

Cədvəldə yenilənmiş qeydlər "DataNumen Məhsullar"

Şəkil 6 Cədvəldəki Yenilənmiş Qeydlər “DataNumen Məhsullar"

  1. İki qeyd eyni əsas açar dəyərlərinə malik olduğundan, münaqişənin qarşısını almaq üçün onlardan birini aşağıdakı kimi dəyişdirməliyik:
UPDATE DataNumenProduct SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Nəhayət, cədvələ aşağıdakı kimi əsas açar məhdudiyyəti “pk” əlavə edirik:
ALTER TABLE DataNumenProduct
ADD CONSTRAINT pk PRIMARY KEY(ProductId);

İndi cədvəldə aşağıdakı kimi bəzi qeydlər var:

Cədvəldə Yenilənmiş Məzmun "DataNumen Məhsullar"

Şəkil 7 Cədvəldəki Yenilənmiş Məzmun”DataNumen Məhsullar"

Həll yolu 4: Unikal məhdudiyyəti müvəqqəti olaraq deaktiv edin SQL Server İdarəetmə studiyası:

  1. Əvvəla, cədvəldəki “pk” əsas açar məhdudiyyətini aşağıdakı kimi GUI vasitəsilə silirik:

GUI vasitəsilə Əsas Açar Məhdudiyyəti "pk" silin

Şəkil 8 Əsas Açar Məhdudiyyətini “pk” GUI vasitəsilə silin

  1. Sonra real halda silinmiş qeydi aşağıdakı kimi cədvələ daxil edirik.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

İndi cədvəldə aşağıdakı kimi bəzi qeydlər var:

Cədvəldə yenilənmiş məzmun "DataNumen Məhsullar"

Şəkil 9 Cədvəldəki Yenilənmiş Məzmun”DataNumen Məhsullar"

  1. Sonra cədvəldəki mövcud qeydin əsas açar dəyərini aşağıdakı kimi dəyişdiririk:
UPDATE DataNumenProduct
SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Nəhayət, GUI vasitəsilə cədvələ "pk" əsas açar məhdudiyyətini aşağıdakı kimi əlavə edirik:GUI vasitəsilə Əsas Açar Məhdudiyyətini “pk” geri əlavə edin

Şəkil 8 Əsas Açar Məhdudiyyətini “pk” GUI vasitəsilə geri əlavə edin

Həll etmək SQL Server Verilənlər bazası korrupsiyası

Unikal məhdudiyyətlərdən başqa, SQL Server korrupsiya həmçinin DBA-ları qıcıqlandıran çox yayılmış bir problemdir. Normalda istifadə edə bilərik SQL Server korrupsiyaları həll etmək üçün daxili əmrlər. Lakin, əgər onlar işləmirsə, onda biz hansısa üçüncü tərəfə müraciət edə bilərik SQL Server məlumat bərpa alətləri.

Müəllif Giriş:

Cim Hu məlumatların bərpası üzrə mütəxəssisdir DataNumendaxil olmaqla məlumatların bərpası texnologiyaları üzrə dünya lideri olan , Inc Giriş təmiri və dbf proqram məhsullarının təmiri. Ətraflı məlumat üçün ziyarət edin www.datanumen.com

İndi paylaş:

Şərhlər bağlıdır.