Өвөрмөц хязгаарлалт нь таныг шинэ бичлэг оруулахад саад болох 4 тойрон гарах арга зам SQL Server

Одоо хуваалцах:

Хэрэв та өвөрмөц хязгаарлалтаас болж хүснэгтэд шинэ бичлэг оруулж чадаагүй бол энэ нийтлэлийг уншихаа бүү мартаарай. Энэ асуудлыг шийдэхэд тань туслах болно.

Энэ нийтлэлд бид хүснэгтийн өвөрмөц хязгаарлалтыг зөрчсөн тул шинэ бичлэг оруулахгүй байх үед асуудлыг шийдэх 4 аргыг танилцуулах болно. SQL Server.

Бодит тохиолдол:

Одоо бодит хэргийг харцгаая. Бидэнд "Бүтээгдэхүүн" нэртэй мэдээллийн сан байгаа бөгөөд "Бүтээгдэхүүн" гэсэн хүснэгт байдаг.DataNumenБүтээгдэхүүн” мэдээллийн санд. Хүснэгтэнд "ProductId" болон "ProductName" гэсэн өгөгдлийн төрөл тус бүр "int" болон "varchar" гэсэн хоёр талбар байна. Мөн "ProductId" нь өвөрмөц хязгаарлалттай үндсэн түлхүүр юм.

Одоогоор хүснэгтэд дараах бичлэгүүд байна.Хүснэгт дэх бичлэгүүд "DataNumenБүтээгдэхүүн"

Зураг 1 Хүснэгтэнд байгаа бичлэгүүд "DataNumenБүтээгдэхүүн"

Өгөгдлийн сангийн хоёр DBA байдаг гэж үзвэл, өөрөөр хэлбэл, Жим, Том. Нэгэн өдөр Жим хүснэгтийн эхний бичлэгийг дараах байдлаар устгав.

DELETE FROM DataNumenProduct
WHERE ProductId=1;

Хоёр дахь өдөр Том устгасан бичлэгтэй ижил үндсэн түлхүүр бүхий шинэ бичлэгийг хүснэгтэд оруулав.

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

Тиймээс манай хүснэгтэд дараах бичлэгүүд байна.

Хүснэгт дэх шинэчлэгдсэн бүртгэлүүд "DataNumenБүтээгдэхүүн ”

Зураг 2 "Хүснэгтэнд шинэчлэгдсэн бүртгэлүүд"DataNumenБүтээгдэхүүн ”

Хэрэв Жим устгасан бичлэгийг хүснэгтэд буцааж сэргээхийг хүсвэл энэ нь "ProductId" үндсэн түлхүүрийн өвөрмөц хязгаарлалтыг зөрчих болно. Ийм тохиолдолд бид асуудлыг шийдэхийн тулд доорх тойрон гарах аргуудын аль нэгийг ашиглаж болно.

Шийдэл 1: Зөрчилдөөнөөс урьдчилан сэргийлэхийн тулд шинэ бичлэгийн үндсэн түлхүүрийг өөрчил

Бид оруулах бичлэгийн үндсэн түлхүүрийг хүснэгтэд байгаа бүх бүртгэлээс өөр шинэ утга болгон өөрчилж болно. Дээрх тохиолдлыг жишээ болгон авч үзвэл, оруулах бичлэгийн хувьд бид үндсэн түлхүүрийн утгыг 1-ээс 5 болгон өөрчилж болно. Дараа нь бид шинэ үүсгэсэн бичлэгийг дараах байдлаар буцааж хүснэгтэд сэргээж болно.

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

Хүснэгтийн эцсийн бүртгэлийг доор харуулав.Хүснэгт дэх эцсийн бичлэгүүд "DataNumen Бүтээгдэхүүн ”

Зураг 3 Хүснэгт дэх эцсийн бичлэгүүд "DataNumen Бүтээгдэхүүн ”

2-р гарц: Зөрчилдөөнөөс урьдчилан сэргийлэхийн тулд одоо байгаа бичлэгийн үндсэн түлхүүрийг өөрчил

  1. Эхлээд бид зөрчил үүсгэж болзошгүй байгаа бичлэгийн үндсэн түлхүүр утгыг дараах байдлаар шинэчлэх хэрэгтэй.
UPDATE DataNumenProduct
SET ProductId = 6
WHERE ProductId = 1;

Хүснэгтэнд шинэчлэгдсэн бүртгэлүүдийг доор харуулав.

Хүснэгт дэх шинэчлэгдсэн бүртгэлүүд "DataNumen Бүтээгдэхүүн ”

Зураг 4 "Хүснэгтэнд шинэчлэгдсэн бүртгэлүүд"DataNumen Бүтээгдэхүүн ”

  1. Дараа нь бид устгасан бичлэгийг хүснэгтэд дараах байдлаар сэргээж болно.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair ');

Одоо дараах байдлаар эцсийн хувилбарыг харцгаая.

Хүснэгт дэх эцсийн бичлэгүүд "DataNumen Бүтээгдэхүүн ”

Зураг 5 Хүснэгт дэх эцсийн бичлэгүүд "DataNumen Бүтээгдэхүүн ”

3-р тойрон гарах арга: SQL-ээр дамжуулан өвөрмөц хязгаарлалтыг түр хугацаагаар идэвхгүй болгох

  1. Асуудлыг шийдэхийн тулд бид хүснэгтээс "pk" гэсэн үндсэн түлхүүрийн хязгаарлалтыг доор дурдсанчлан түр хугацаанд устгаж болно.
ALTER TABLE DataNumenProduct
DROP CONSTRAINT pk;
  1. Дараа нь бид устгасан бичлэгийг хүснэгтэд дараах байдлаар нэмж болно.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Одоо хүснэгтэд байгаа бичлэгүүдийг харцгаая.

Хүснэгт дэх шинэчлэгдсэн бүртгэлүүд "DataNumen Бүтээгдэхүүн ”

Зураг 6 "Хүснэгтэнд шинэчлэгдсэн бүртгэлүүд"DataNumen Бүтээгдэхүүн ”

  1. Дараа нь хоёр бүртгэл ижил үндсэн түлхүүр утгатай тул бид зөрчлөөс урьдчилан сэргийлэхийн тулд тэдгээрийн аль нэгийг нь дараах байдлаар өөрчлөх шаардлагатай.
UPDATE DataNumenProduct SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Эцэст нь бид "pk" үндсэн түлхүүр хязгаарлалтыг хүснэгтэд дараах байдлаар нэмж оруулав.
ALTER TABLE DataNumenProduct
ADD CONSTRAINT pk PRIMARY KEY(ProductId);

Одоо хүснэгтэд дараах бичлэгүүд байна.

Хүснэгт дэх шинэчлэгдсэн контент "DataNumen Бүтээгдэхүүн ”

Зураг 7 Хүснэгт дэх шинэчлэгдсэн агуулга "DataNumen Бүтээгдэхүүн ”

4-р тойрон гарах арга: Өвөрмөц хязгаарлалтыг түр хугацаагаар идэвхгүй болгох SQL Server Менежментийн студи:

  1. Эхний ээлжинд бид дараах байдлаар GUI-ээр дамжуулан хүснэгтэд байгаа "pk" үндсэн түлхүүр хязгаарлалтыг устгана.

GUI-ээр дамжуулан "pk" үндсэн түлхүүрийн хязгаарлалтыг устгана уу

Зураг 8 GUI-ээр дамжуулан "pk" үндсэн түлхүүрийн хязгаарлалтыг устгана уу

  1. Дараа нь бид устгасан бичлэгийг бодит үсгээр хүснэгтэд дараах байдлаар оруулна.
INSERT INTO DataNumenProduct
VALUES(1, 'DataNumen Access Repair');

Одоо хүснэгтэд дараах бичлэгүүд байна.

Хүснэгт дэх шинэчлэгдсэн контент "DataNumen Бүтээгдэхүүн ”

Зураг 9 "Хүснэгт дэх шинэчилсэн агуулга"DataNumen Бүтээгдэхүүн ”

  1. Дараа нь бид хүснэгтэд байгаа бичлэгийн үндсэн түлхүүр утгыг дараах байдлаар өөрчилнө.
UPDATE DataNumenProduct
SET ProductId = 5
WHERE ProductName = 'DataNumen Outlook Repair';
  1. Эцэст нь бид "pk" үндсэн түлхүүр хязгаарлалтыг дараах байдлаар GUI-ээр дамжуулан хүснэгтэд буцааж нэмнэ.GUI-ээр дамжуулан "pk" үндсэн түлхүүрийн хязгаарлалтыг буцаан нэмнэ үү

Зураг 8 GUI-ээр дамжуулан "pk" үндсэн түлхүүрийн хязгаарлалтыг буцаан нэмнэ үү

Шийдэл SQL Server Мэдээллийн сангийн авлига

Өвөрмөц хязгаарлалтаас бусад тохиолдолд, SQL Server авлига нь бас DBA-г залхаах маш нийтлэг асуудал юм. Ер нь бид ашиглаж болно SQL Server эвдрэлийг арилгахын тулд суурилуулсан командууд. Гэсэн хэдий ч, хэрэв тэд ажиллахгүй бол бид гуравдагч этгээдэд хандаж болно SQL Server мэдээлэл сэргээх хэрэгсэл.

Зохиогчийн танилцуулга:

Жим Ху бол өгөгдөл сэргээх мэргэжилтэн юм DataNumen, Үүнд мэдээлэл сэргээх технологиор дэлхийд тэргүүлэгч, Inc. Нэвтрэх засвар болон dbf програм хангамжийн бүтээгдэхүүнийг засах. Дэлгэрэнгүй мэдээллийг авна уу WWW.datanumen.com

Одоо хуваалцах:

Тайлбарууд нь хаалттай байна.