Esmane võti ja võõrvõti sees SQLite koos näidetega
SQLite Piirangud
Veerupiirangud jõustavad veergu sisestatud väärtustele piiranguid ja reegleid, et sisestatud andmeid kinnitada. Veergude piirangud määratletakse tabeli loomisel veeru definitsioonis.
SQLite Esmane võti
Kõik primaarvõtme veerus olevad väärtused peaksid olema kordumatud ja mitte nullid
Primaarvõtit saab rakendada ainult ühele veerule või veergude kombinatsioonile, viimasel juhul peaks veergude väärtuste kombinatsioon olema kõigi tabeli ridade jaoks unikaalne.
süntaksit:
Tabelis primaarvõtme määratlemiseks on palju erinevaid viise, näiteks:
- Veeru määratluses:
ColumnName INTEGER NOT NULL PRIMARY KEY;
- Eraldi määratlusena:
PRIMARY KEY(ColumnName);
- Veergude kombinatsiooni loomiseks esmase võtmena toimige järgmiselt.
PRIMARY KEY(ColumnName1, ColumnName2);
Mitte nullpiirang
SQLite Mitte null-piirang takistab veeru nullväärtust saamast:
ColumnName INTEGER NOT NULL;
DEFAULT Piirang
SQLite Vaikepiirang, kui te veergu väärtust ei lisa, lisatakse selle asemel vaikeväärtus.
Näiteks:
ColumnName INTEGER DEFAULT 0;
Kui kirjutate sisestuslause ja te ei määranud sellele veerule väärtust, on veeru väärtus 0.
SQLite UNIKAALNE piirang
SQLite Ainulaadne piirang hoiab ära väärtuste dubleerimise kõigi veeru väärtuste vahel.
Näiteks:
EmployeeId INTEGER NOT NULL UNIQUE;
Sellega jõustatakse "Töötaja ID" väärtus olema kordumatu, ei ole lubatud väärtusi dubleerida. Pange tähele, et see kehtib veeru väärtuste kohta "Töötaja ID" ainult.
SQLite KONTROLLI piirangut
SQLite kontrolli piirangut tingimust, et kontrollida sisestatud väärtust. Kui väärtus ei vasta tingimusele, siis seda ei lisata.
Quantity INTEGER NOT NULL CHECK(Quantity > 10);
Te ei saa sisestada väärtust, mis on väiksem kui 10 "Kogus" kolonni.
SQLite võõrvõti
. SQLite Võõrvõti on piirang, mis kontrollib ühes tabelis oleva väärtuse olemasolu teises tabelis, millel on seos esimese tabeliga, kus võõrvõti on määratletud.
Kui töötate mitme tabeliga, kui on kaks tabelit, mis on üksteisega seotud ühe ühise veeruga. Ja kui soovite tagada, et ühte neist sisestatud väärtus peab eksisteerima teise tabeli veerus, peaksite veerus ühiselt kasutama "Võõrvõtme piirangut".
Sel juhul, kui proovite sellesse veergu väärtust sisestada, tagab välisvõti, et sisestatud väärtus on tabeli veerus olemas.
Pange tähele, et võõrvõtmete piirangud ei ole vaikimisi sisse lülitatud SQLite, peate need esmalt lubama, käivitades järgmise käsu:
PRAGMA foreign_keys = ON;
Võõrvõtme piirangud võeti kasutusele aastal SQLite alates versioonist 3.6.19.
Näide SQLite võõrvõti
Oletame, et meil on kaks tabelit; Õpilased ja osakonnad.
Tabelis Õpilased on õpilaste nimekiri ja osakondade tabelis on osakondade loend. Iga õpilane kuulub osakonda; st igal õpilasel on veerg DepartmentId.
Nüüd näeme, kuidas saab võõrvõtmepiirangust abi olla tagamaks, et osakonna ID väärtus õpilaste tabelis peab olema osakondade tabelis.
Seega, kui lõime tabelis Students osakonna ID jaoks võõrvõtme piirangu, peab iga sisestatud osakonna ID olema tabelis Osakonnad.
CREATE TABLE [Departments] ( [DepartmentId] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, [DepartmentName] NVARCHAR(50) NULL ); CREATE TABLE [Students] ( [StudentId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [StudentName] NVARCHAR(50) NULL, [DepartmentId] INTEGER NOT NULL, [DateOfBirth] DATE NULL, FOREIGN KEY(DepartmentId) REFERENCES Departments(DepartmentId) );
Et kontrollida, kuidas võõrvõtmepiirangud võivad takistada määratlemata elemendi või väärtuse lisamist tabelisse, millel on seos mõne teise tabeliga, uurime järgmist näidet.
Selles näites on tabelis Osakonnad tabeli Õpilased välisvõtme piirang, seega peab iga õpilaste tabelisse sisestatud osakonna ID väärtus olema osakondade tabelis. Kui proovite sisestada osakonna ID väärtust, mida osakondade tabelis pole, takistab võõrvõtme piirang teil seda teha.
Sisestame kaks osakonda „IT” ja "Kunstid" osakondade tabelisse järgmiselt:
INSERT INTO Departments VALUES(1, 'IT'); INSERT INTO Departments VALUES(2, 'Arts');
Need kaks väidet peaksid lisama osakondade tabelisse kaks osakonda, saate veenduda, et kaks väärtust sisestati päringu käivitamisega „VALI * Osakondadest” pärast seda:
Seejärel proovige sisestada uus õpilane osakonna ID-ga, mida osakondade tabelis pole:
INSERT INTO Students(StudentName,DepartmentId) VALUES('John', 5);
Rida ei lisata ja kuvatakse tõrketeade, mis ütleb järgmist: FOREIGN KEY piirang ebaõnnestus.