Agar noyob cheklov tufayli jadvalga yangi yozuv kirita olmasangiz, ushbu maqolani o'qishni o'tkazib yubormang. Bu muammoni hal qilishga yordam beradi.
Ushbu maqolada biz yangi yozuvni kirita olmaganingizda muammoni hal qilishning 4 usulini taqdim etamiz, chunki u jadvaldagi noyob cheklovni buzadi. SQL Server.
Haqiqiy holat:
Endi haqiqiy ishni ko'rib chiqaylik. Bizda "Mahsulot" nomli ma'lumotlar bazasi mavjud va "Mahsulot" deb nomlangan jadval mavjud.DataNumenMahsulot” ma’lumotlar bazasida. Jadvalda ikkita maydon mavjud, ya'ni "MahsulotId" va "Mahsulot nomi", mos ravishda "int" va "varchar" ma'lumotlar turlari. Va "ProductId" - bu noyob cheklovga ega asosiy kalit.
Hozirgi vaqtda jadvalda quyidagi yozuvlar mavjud:
1-rasm Jadvaldagi yozuvlar "DataNumenMahsulot”
Ma'lumotlar bazasi uchun ikkita DBA mavjud, ya'ni Jim va Tom. Bir kuni Jim jadvaldagi birinchi yozuvni quyidagi tarzda o'chirib tashladi:
DELETE FROM DataNumenProduct WHERE ProductId=1;
Ikkinchi kuni Tom jadvalga o'chirilgan yozuv bilan bir xil asosiy kalitga ega bo'lgan yangi yozuvni qo'shdi:
INSERT INTO DataNumenProduct VALUES(1,'DataNumen OutLook Repair');
Shunday qilib, bizning jadvalimizda quyidagi yozuvlar mavjud:
2-rasm Jadvaldagi yangilangan yozuvlarDataNumenMahsulotlar”
Endi Jim o'chirilgan yozuvni jadvalga qaytarmoqchi bo'lsa, u "ProductId" asosiy kalitining noyob cheklanishini buzadi. Bunday holda, muammoni hal qilish uchun quyidagi vaqtinchalik echimlardan birini qo'llashimiz mumkin.
Vaqtinchalik yechim 1: Mojaroning oldini olish uchun yangi yozuvning asosiy kalitini o'zgartiring
Biz qo'shiladigan yozuvning asosiy kalitini jadvaldagi barcha mavjud yozuvlardan farq qiladigan yangi qiymatga o'zgartirishimiz mumkin. Yuqoridagi holatni misol qilib oling, yozuv kiritilishi uchun biz asosiy kalit qiymatini 1 dan 5 gacha o'zgartirishimiz mumkin. Keyin yangi yaratilgan yozuvni quyidagi tarzda jadvalga qaytarishimiz mumkin:
INSERT INTO DataNumenProduct VALUES(5, 'DataNumen Access Repair');
Quyida jadvaldagi yakuniy qaydlar keltirilgan:
3-rasm Jadvaldagi yakuniy yozuvlar "DataNumen Mahsulotlar”
Vaqtinchalik yechim 2: Mojaroning oldini olish uchun mavjud yozuvning asosiy kalitini o'zgartiring
- Birinchidan, biz mavjud yozuvning asosiy kalit qiymatini yangilashimiz kerak, bu ziddiyatga olib kelishi mumkin, masalan:
UPDATE DataNumenProduct SET ProductId = 6 WHERE ProductId = 1;
Quyida jadvaldagi yangilangan yozuvlar keltirilgan:
4-rasm Jadvaldagi yangilangan yozuvlarDataNumen Mahsulotlar”
- Keyin o'chirilgan yozuvni quyidagi tarzda jadvalga qaytarishimiz mumkin:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair ');
Endi quyida keltirilgan yakuniy versiyani ko'rib chiqamiz:
5-rasm Jadvaldagi yakuniy yozuvlarDataNumen Mahsulotlar”
Vaqtinchalik yechim 3: SQL orqali noyob cheklovni vaqtincha o'chirib qo'ying
- Muammoni hal qilish uchun jadvaldagi "pk" asosiy kalit cheklovini vaqtincha quyidagicha o'chirishimiz mumkin:
ALTER TABLE DataNumenProduct DROP CONSTRAINT pk;
- Keyin o'chirilgan yozuvni quyidagi tarzda jadvalga qo'shishimiz mumkin:
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Endi jadvaldagi yozuvlarni ko'rib chiqamiz:
6-rasm Jadvaldagi yangilangan yozuvlarDataNumen Mahsulotlar”
- Keyin ikkita yozuv bir xil asosiy kalit qiymatlarga ega bo'lganligi sababli, nizolarni oldini olish uchun ulardan birini quyidagi tarzda o'zgartirishimiz kerak:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Nihoyat, jadvalga quyidagi asosiy kalit cheklovi "pk" ni qo'shamiz:
ALTER TABLE DataNumenProduct ADD CONSTRAINT pk PRIMARY KEY(ProductId);
Endi jadvalda quyidagi yozuvlar mavjud:
7-rasm Jadvaldagi yangilangan tarkib "DataNumen Mahsulotlar”
Vaqtinchalik yechim 4: Noyob cheklovni vaqtincha o'chirib qo'ying SQL Server Menejment studiyasi:
- Birinchi navbatda, jadvaldagi asosiy cheklov "pk" ni GUI orqali quyidagi tarzda o'chirib tashlaymiz:
8-rasm GUI orqali birlamchi kalit cheklovi "pk" ni o'chiring
- Keyin o'chirilgan yozuvni haqiqiy holatda quyidagi jadvalga kiritamiz.
INSERT INTO DataNumenProduct VALUES(1, 'DataNumen Access Repair');
Endi jadvalda quyidagi yozuvlar mavjud:
9-rasm Jadvaldagi yangilangan tarkibDataNumen Mahsulotlar”
- Keyin jadvaldagi mavjud yozuvning asosiy kalit qiymatini quyidagi tarzda o'zgartiramiz:
UPDATE DataNumenProduct SET ProductId = 5 WHERE ProductName = 'DataNumen Outlook Repair';
- Nihoyat, biz jadvalga birlamchi kalit cheklovi "pk" ni quyidagi tarzda GUI orqali qo'shamiz:
8-rasm GUI orqali "pk" asosiy kalit cheklovini qaytarib qo'shing
Hal qilish SQL Server Ma'lumotlar bazasining buzilishi
Noyob cheklovlardan tashqari, SQL Server korruptsiya Bundan tashqari, DBAlarni bezovta qiladigan juda keng tarqalgan muammo. Odatda biz foydalanishimiz mumkin SQL Server buzilishlarni hal qilish uchun o'rnatilgan buyruqlar. Ammo, agar ular ishlamasa, biz uchinchi tomonga murojaat qilishimiz mumkin SQL Server ma'lumotlarni qayta tiklash vositalari.
Muallif kirish:
Jim Xu - ma'lumotlarni qayta tiklash bo'yicha mutaxassis DataNumenMa'lumotlarni qayta tiklash texnologiyalari bo'yicha jahon yetakchisi bo'lgan , Inc Kirish ta'mirlash va dbf dasturiy mahsulotlarni ta'mirlash. Qo'shimcha ma'lumot olish uchun tashrif buyuring www.datanumen.com








