Хэрэв та өвөрмөц хязгаарлалтаас болж хүснэгтэд шинэ бичлэг оруулж чадаагүй бол энэ нийтлэлийг уншихаа бүү мартаарай. Энэ асуудлыг шийдэхэд тань туслах болно.
Энэ нийтлэлд бид хүснэгтийн өвөрмөц хязгаарлалтыг зөрчсөн тул шинэ бичлэг оруулахгүй байх үед асуудлыг шийдэх 4 аргыг танилцуулах болно. SQL Server.
Бодит тохиолдол:
Одоо бодит хэргийг харцгаая. Бидэнд "Бүтээгдэхүүн" нэртэй мэдээллийн сан байгаа бөгөөд "Бүтээгдэхүүн" гэсэн хүснэгт байдаг.DataNumenБүтээгдэхүүн” мэдээллийн санд. Хүснэгтэнд "ProductId" болон "ProductName" гэсэн өгөгдлийн төрөл тус бүр "int" болон "varchar" гэсэн хоёр талбар байна. Мөн "ProductId" нь өвөрмөц хязгаарлалттай үндсэн түлхүүр юм.
Одоогоор хүснэгтэд дараах бичлэгүүд байна.
Зураг 1 Хүснэгтэнд байгаа бичлэгүүд "DataNumenБүтээгдэхүүн"
Өгөгдлийн сангийн хоёр DBA байдаг гэж үзвэл, өөрөөр хэлбэл, Жим, Том. Нэгэн өдөр Жим хүснэгтийн эхний бичлэгийг дараах байдлаар устгав.
DELETE FROM DataNumenProduct WHERE ProductId=1;
Хоёр дахь өдөр Том устгасан бичлэгтэй ижил үндсэн түлхүүр бүхий шинэ бичлэгийг хүснэгтэд оруулав.
INSERT INTO DataNumenProduct VALUES(1,'DataNumen OutLook Repair');
Тиймээс манай хүснэгтэд дараах бичлэгүүд байна.
Зураг 2 "Хүснэгтэнд шинэчлэгдсэн бүртгэлүүд"DataNumenБүтээгдэхүүн ”
Хэрэв Жим устгасан бичлэгийг хүснэгтэд буцааж сэргээхийг хүсвэл энэ нь "ProductId" үндсэн түлхүүрийн өвөрмөц хязгаарлалтыг зөрчих болно. Ийм тохиолдолд бид асуудлыг шийдэхийн тулд доорх тойрон гарах аргуудын аль нэгийг ашиглаж болно.
Шийдэл 1: Зөрчилдөөнөөс урьдчилан сэргийлэхийн тулд шинэ бичлэгийн үндсэн түлхүүрийг өөрчил
Бид оруулах бичлэгийн үндсэн түлхүүрийг хүснэгтэд байгаа бүх бүртгэлээс өөр шинэ утга болгон өөрчилж болно. Дээрх тохиолдлыг жишээ болгон авч үзвэл, оруулах бичлэгийн хувьд бид үндсэн түлхүүрийн утгыг 1-ээс 5 болгон өөрчилж болно. Дараа нь бид шинэ үүсгэсэн бичлэгийг дараах байдлаар буцааж хүснэгтэд сэргээж болно.
INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');
Хүснэгтийн эцсийн бүртгэлийг доор харуулав.
Зураг 3 Хүснэгт дэх эцсийн бичлэгүүд "DataNumen Бүтээгдэхүүн ”
2-р гарц: Зөрчилдөөнөөс урьдчилан сэргийлэхийн тулд одоо байгаа бичлэгийн үндсэн түлхүүрийг өөрчил
- Эхлээд бид зөрчил үүсгэж болзошгүй байгаа бичлэгийн үндсэн түлхүүр утгыг дараах байдлаар шинэчлэх хэрэгтэй.
UPDATE DataNumenProduct SET ProductId = 6 WHERE ProductId = 1;
Хүснэгтэнд шинэчлэгдсэн бүртгэлүүдийг доор харуулав.
Зураг 4 "Хүснэгтэнд шинэчлэгдсэн бүртгэлүүд"DataNumen Бүтээгдэхүүн ”
- Дараа нь бид устгасан бичлэгийг хүснэгтэд дараах байдлаар сэргээж болно.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair ');
Одоо дараах байдлаар эцсийн хувилбарыг харцгаая.
Зураг 5 Хүснэгт дэх эцсийн бичлэгүүд "DataNumen Бүтээгдэхүүн ”
3-р тойрон гарах арга: SQL-ээр дамжуулан өвөрмөц хязгаарлалтыг түр хугацаагаар идэвхгүй болгох
- Асуудлыг шийдэхийн тулд бид хүснэгтээс "pk" гэсэн үндсэн түлхүүрийн хязгаарлалтыг доор дурдсанчлан түр хугацаанд устгаж болно.
ALTER TABLE DataNumenProduct DROP CONSTRAINT pk;
- Дараа нь бид устгасан бичлэгийг хүснэгтэд дараах байдлаар нэмж болно.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Одоо хүснэгтэд байгаа бичлэгүүдийг харцгаая.
Зураг 6 "Хүснэгтэнд шинэчлэгдсэн бүртгэлүүд"DataNumen Бүтээгдэхүүн ”
- Дараа нь хоёр бүртгэл ижил үндсэн түлхүүр утгатай тул бид зөрчлөөс урьдчилан сэргийлэхийн тулд тэдгээрийн аль нэгийг нь дараах байдлаар өөрчлөх шаардлагатай.
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Эцэст нь бид "pk" үндсэн түлхүүр хязгаарлалтыг хүснэгтэд дараах байдлаар нэмж оруулав.
ALTER TABLE DataNumenProduct ADD CONSTRAINT pk PRIMARY KEY(ProductId);
Одоо хүснэгтэд дараах бичлэгүүд байна.
Зураг 7 Хүснэгт дэх шинэчлэгдсэн агуулга "DataNumen Бүтээгдэхүүн ”
4-р тойрон гарах арга: Өвөрмөц хязгаарлалтыг түр хугацаагаар идэвхгүй болгох SQL Server Менежментийн студи:
- Эхний ээлжинд бид дараах байдлаар GUI-ээр дамжуулан хүснэгтэд байгаа "pk" үндсэн түлхүүр хязгаарлалтыг устгана.
Зураг 8 GUI-ээр дамжуулан "pk" үндсэн түлхүүрийн хязгаарлалтыг устгана уу
- Дараа нь бид устгасан бичлэгийг бодит үсгээр хүснэгтэд дараах байдлаар оруулна.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Одоо хүснэгтэд дараах бичлэгүүд байна.
Зураг 9 "Хүснэгт дэх шинэчилсэн агуулга"DataNumen Бүтээгдэхүүн ”
- Дараа нь бид хүснэгтэд байгаа бичлэгийн үндсэн түлхүүр утгыг дараах байдлаар өөрчилнө.
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Эцэст нь бид "pk" үндсэн түлхүүр хязгаарлалтыг дараах байдлаар GUI-ээр дамжуулан хүснэгтэд буцааж нэмнэ.
Зураг 8 GUI-ээр дамжуулан "pk" үндсэн түлхүүрийн хязгаарлалтыг буцаан нэмнэ үү
Шийдэл SQL Server Мэдээллийн сангийн авлига
Өвөрмөц хязгаарлалтаас бусад тохиолдолд, SQL Server авлига нь бас DBA-г залхаах маш нийтлэг асуудал юм. Ер нь бид ашиглаж болно SQL Server эвдрэлийг арилгахын тулд суурилуулсан командууд. Гэсэн хэдий ч, хэрэв тэд ажиллахгүй бол бид гуравдагч этгээдэд хандаж болно SQL Server мэдээлэл сэргээх хэрэгсэл.
Зохиогчийн танилцуулга:
Жим Ху бол өгөгдөл сэргээх мэргэжилтэн юм DataNumen, Үүнд мэдээлэл сэргээх технологиор дэлхийд тэргүүлэгч, Inc. Нэвтрэх засвар болон dbf програм хангамжийн бүтээгдэхүүнийг засах. Дэлгэрэнгүй мэдээллийг авна уу WWW.datanumen.com








