Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megismerheti a dedikált SQL-készlet táblakorlátozásait, beleértve az elsődleges kulcsot, az idegen kulcsot és az egyedi kulcsot.
Táblázati korlátozások
A dedikált SQL-készlet a következő táblakorlátozásokat támogatja:
- Az ELSŐDLEGES KULCS csak akkor támogatott, ha a NEMCLUSTERED és a NOT ENFORCED is használatban van.
- AZ EGYEDI korlátozás csak akkor támogatott, ha NINCS KÉNYSZERÍTVE.
Szintaxis ellenőrzéséhez tekintse meg az ALTER TABLE és CREATE TABLE parancsokat.
A KÜLSŐ KULCS kényszer nem támogatott a dedikált SQL-készletben.
Megjegyzések
Az elsődleges kulcs és/vagy egyedi kulcs lehetővé teszi a dedikált SQL-készletmotor számára, hogy optimális végrehajtási tervet hozzon létre egy lekérdezéshez. Az elsődleges kulcs oszlopában vagy egy egyedi kényszeroszlopban lévő összes értéknek egyedinek kell lennie.
Fontos
Miután létrehozott egy táblát elsődleges kulccsal vagy egyedi korlátozással a dedikált SQL-készletben, a felhasználóknak gondoskodniuk kell arról, hogy az oszlopokban lévő összes érték egyedi legyen. Ennek megsértése miatt a lekérdezés pontatlan eredményt ad vissza.
Ez a példa bemutatja, hogy a lekérdezések hogyan adhatnak vissza pontatlan eredményt, ha az elsődleges kulcs vagy egyedi kényszeroszlop ismétlődő értékeket tartalmaz.
-- Create table t1
CREATE TABLE t1 (a1 INT NOT NULL, b1 INT) WITH (DISTRIBUTION = ROUND_ROBIN)
-- Insert values to table t1 with duplicate values in column a1.
INSERT INTO t1 VALUES (1, 100)
INSERT INTO t1 VALUES (1, 1000)
INSERT INTO t1 VALUES (2, 200)
INSERT INTO t1 VALUES (3, 300)
INSERT INTO t1 VALUES (4, 400)
-- Run this query. No primary key or unique constraint. 4 rows returned. Correct result.
SELECT a1, COUNT(*) AS total FROM t1 GROUP BY a1
/*
a1 total
----------- -----------
1 2
2 1
3 1
4 1
(4 rows affected)
*/
-- Add unique constraint
ALTER TABLE t1 ADD CONSTRAINT unique_t1_a1 unique (a1) NOT ENFORCED
-- Re-run this query. 5 rows returned. Incorrect result.
SELECT a1, count(*) AS total FROM t1 GROUP BY a1
/*
a1 total
----------- -----------
2 1
4 1
1 1
3 1
1 1
(5 rows affected)
*/
-- Drop unique constraint.
ALTER TABLE t1 DROP CONSTRAINT unique_t1_a1
-- Add primary key constraint
ALTER TABLE t1 add CONSTRAINT PK_t1_a1 PRIMARY KEY NONCLUSTERED (a1) NOT ENFORCED
-- Re-run this query. 5 rows returned. Incorrect result.
SELECT a1, COUNT(*) AS total FROM t1 GROUP BY a1
/*
a1 total
----------- -----------
2 1
4 1
1 1
3 1
1 1
(5 rows affected)
*/
-- Manually fix the duplicate values in a1
UPDATE t1 SET a1 = 0 WHERE b1 = 1000
-- Verify no duplicate values in column a1
SELECT * FROM t1
/*
a1 b1
----------- -----------
2 200
3 300
4 400
0 1000
1 100
(5 rows affected)
*/
-- Add unique constraint
ALTER TABLE t1 add CONSTRAINT unique_t1_a1 UNIQUE (a1) NOT ENFORCED
-- Re-run this query. 5 rows returned. Correct result.
SELECT a1, COUNT(*) as total FROM t1 GROUP BY a1
/*
a1 total
----------- -----------
2 1
3 1
4 1
0 1
1 1
(5 rows affected)
*/
-- Drop unique constraint.
ALTER TABLE t1 DROP CONSTRAINT unique_t1_a1
-- Add primary key constraint
ALTER TABLE t1 ADD CONSTRAINT PK_t1_a1 PRIMARY KEY NONCLUSTERED (a1) NOT ENFORCED
-- Re-run this query. 5 rows returned. Correct result.
SELECT a1, COUNT(*) AS total FROM t1 GROUP BY a1
/*
a1 total
----------- -----------
2 1
3 1
4 1
0 1
1 1
(5 rows affected)
*/
Példák
Hozzon létre egy dedikált SQL-készlettáblát elsődleges kulccsal:
CREATE TABLE mytable (c1 INT PRIMARY KEY NONCLUSTERED NOT ENFORCED, c2 INT);
Hozzon létre egy dedikált SQL-készlettáblát egyedi korlátozással:
CREATE TABLE t6 (c1 INT UNIQUE NOT ENFORCED, c2 INT);
Kapcsolódó tartalom
A dedikált SQL-készlet tábláinak létrehozása után a következő lépés az adatok betöltése a táblába. Betöltési oktatóanyagért lásd : Adatok betöltése dedikált SQL-készletbe.