Table_constraint (tranzactioneze-sql)

Indică începutul definiției de constrângeri cheie primară, unic, cheie externă, și să verifice, implicit și sugestii.

nume de constrângere. Numele Constrângeri trebuie să respecte regulile de dispozitive de identificare. cu excepția faptului că acestea nu pot începe cu un semn de număr (#). Dacă argumentul CONSTRAINT_NAME nu este specificat, restricția este dat un nume, sistemul format.

Restricția de integritate forțată performanțe au entitate pentru coloana specificată sau coloane folosind un index unic. Pentru fiecare tabel poate fi creată o singură cheie primară constrângere.

Limitarea asigură integritatea entității pentru coloana specificată sau coloane folosind un index unic.

Aceasta indică faptul că cheie primara creează un index cluster sau non-grupată. Cheie primară implicit restricții au valoare în cluster. constrângere unică implicită au valoare NONCLUSTERED.

În cazul în care o constrângere sau indicele de cluster deja creat în tabel, valoarea Clustered nu poate fi specificată. În cazul în care o constrângere sau indicele de cluster există deja în tabel, PRIMARĂ constrangeri implicit la valoarea NONCLUSTERED.

Coloanele cu date de tip ntext. text. varchar (max). nvarchar (max). VARBINARY (max). XML sau imagine. Ele nu pot fi indicate ca un indice de coloane.

O coloană sau lista de coloane în paranteze, utilizat în noua bordură.

Indică ordinea de sortare a coloanei sau coloanelor din limitările de masă implicate. Valoarea implicită - ASC.

Acesta indică cât de bine componenta Database Engine trebuie să completeze fiecare pagina de index utilizat pentru a stoca datele de index. Utilizatorul poate fi dat valorile fillfactor argument în intervalul de la 1 la 100. În cazul în care nu este specificat, valoarea 0 este implicit.

Expresia Descriere CU FILLFACTOR = fillfactor ca singura opțiune de index, care se aplică KEY primare sau un unic, păstrat pentru compatibilitate inversă, dar în versiunile viitoare ale acestei expresii nu este documentată. Alte opțiuni index pot fi specificate în oferta index_option instrucțiune ALTER TABLE.

Specifică locația de stocare a indexului creat pentru constrângerea. În cazul în care este definit un argument partition_scheme_name. Indicele este împărțit în secțiuni, care se potrivesc cu argumentul partition_scheme_name grupuri de fișiere definite. În cazul în care argumentul este definit filegroup. Indexul este creat în filegroup numit. În cazul în care argumentul este specificat „implicit“ sau ON clauza nu este definit deloc, indicele este creat în același filegroup ca și masa. Dacă adăugați un index cluster la constrângeri PRIMARY KEY sau o clauză UNIQUE este specificată, întregul tabel este mutat la filegroup specificat la crearea indicelui.

În acest context, cuvântul «implicit» nu este un cuvânt cheie; este un identificator pentru filegroup implicit, care ar trebui să se limiteze la caractere speciale, atât în ​​termeni pe „default“ sau ON [implicit]. Dacă este setat „default“. QUOTED_IDENTIFIER parametrul pentru sesiunea curentă ar trebui să fie setat pe ON. Această valoare este folosită în mod implicit.

REFERINȚE cheie externă

Constrângerea care asigură integritatea referențială pentru datele din coloana. constrangeri impun ca orice valoare din coloana este necesar să existe în coloana menționată tabelul de referință.

Tabelul care se face referire prin FOREIGN KEY.

O coloană sau o listă de coloane în paranteze se face referire de către noua FOREIGN KEY constrângere.

Componenta Componenta SQL Server Database Engine generează o eroare și este derulată înapoi operarea ștergerea unui rând din tabel părinte.

Dacă linia tabelei părinte este șters, rândurile corespunzătoare sunt șterse din tabelul de referențiere.

Toate valorile care alcătuiesc cheia externă la ștergerea rândului corespunzător din tabela părinte sunt setate la NULL. Pentru a realiza acest lucru, constrângerile externe coloanele cheie pe care trebuie să permită valori NULL.

Toate valorile care conțin cheia externă sunt setate la valorile implicite prin eliminarea rândul părinte corespunzător. Pentru a realiza această limitare, toate coloanele cheie externe trebuie să aibă definiții implicite. În cazul în care coloana permite valori NULL și implicit specificat în mod expres, valoarea implicită a coloanei devine NULL.

Nu folosiți opțiunea CASCADE, în cazul în care masa vor fi incluse într-o publicație de îmbinare care utilizează înregistrările logice. Pentru mai multe informații despre înregistrările logice, a se vedea. Gruparea Modificări Rânduri corelate cu înregistrările logice.

Acțiunea ON DELETE CASCADE nu poate fi definită, în cazul în care există deja tabelul de declanșare variabilă nu pe DELETE.

În cazul în care linia de mai sus în tabelul furnizor ȘTERGE de instrucțiuni este executată și pentru efectele indicate ProductVendor.VendorID ON DELETE CASCADE, atunci componenta de componente controalele de date a motorului pentru unul sau mai multe rânduri dependente de masă ProductVendor. În cazul în care nu există, dar liniile din tabelul de furnizor. vor fi șterse și toate rândurile dependente din tabelul ProductVendor.

În caz contrar, în cazul în care o valoare de nici o acțiune, componentă Componentă Bază de date Motor cauzează o operațiune de eroare și role pentru a elimina siruri de caractere în tabel, în cazul în care cel puțin un rând din tabel se referă la ea ProductVendor.

Componenta Componenta Baza de date Motor returnează o eroare, iar mama actualizare rând de tabel este derulată înapoi.

Rândurile corespunzătoare sunt actualizate în tabelul de referențiere dacă acel rând este actualizată în tabela părinte.

Toate valorile care constituie cheia externă este setată la NULL, actualizate atunci când rândul corespunzător din tabelul părinte. Pentru a realiza acest lucru, constrângerile externe coloanele cheie pe care trebuie să permită valori NULL.

Toate valorile care alcătuiesc cheia externă sunt setate la valoarea implicită atunci când rândul corespunzător este actualizat în tabelul părinte. Pentru a realiza această limitare, toate coloanele cheie externe trebuie să aibă definiții implicite. În cazul în care coloana permite valori NULL și implicit specificat în mod expres, valoarea implicită a coloanei devine NULL.

Nu folosiți opțiunea CASCADE, în cazul în care masa vor fi incluse într-o publicație de îmbinare care utilizează înregistrările logice. Pentru mai multe informații despre înregistrările logice, a se vedea. Gruparea Modificări Rânduri corelate cu înregistrările logice.

Acțiunea ON UPDATE CASCADE, SET NULL și SET DEFAULT nu se poate determina dacă există deja tabela variabilă pentru un declanșator INSTEAD OF privind condițiile UPDATE.

Atunci când se efectuează o declarație UPDATE în linie pentru tabelul Vendor prezinta ON UPDATE CASCADE pentru coloana ProductVendor.VendorID. Componenta componentă Database Engine produce rânduri dependente o ProductVendor schimbare în tabel. În cazul în care acestea există, cu excepția rânduri în tabelul Vânzătorul va fi, de asemenea, modificat și rândul dependente în tabelul ProductVendor.

În cazul în care nu a indicat nici o acțiune, componenta Component Database Engine inițiază o eroare și role înapoi operațiune furnizor actualizare rând de tabel. dacă se referă la cel puțin un rând de tabel ProductVendor.

NU REPLICARE

Acesta poate fi definit pentru restricție și CHECK FOREIGN KEY. În cazul în care această restricție este însoțită de o propunere, nu se efectuează atunci când agenții de replicare a efectua inserare, actualizare sau ștergere.

Aceasta stabilește valoarea implicită pentru coloană. definiții DEFAULT poate fi folosit pentru a specifica valorile implicite pentru noua coloană în rândurile de date existente. definiții implicite nu pot fi adăugate la coloanele care conțin tipul de date timestamp. au proprietatea de identitate, definiția existentă a DEFAULT, sau în cazul în care acestea sunt setate la valorile implicite. Dacă o coloană este setată la valoarea implicită, trebuie să-l eliminați înainte de a putea specifica un nou implicit. Dacă o coloană este setat implicit tipul definit de utilizator, tipul trebuie să susțină un implicite expresii constant_expression de conversie în UDT. Pentru a menține compatibilitatea cu versiunile anterioare ale valorii DEFAULT SQL Server poate fi atribuit un nume de constrângere.

Valoarea literale, NULL sau o funcție de sistem utilizat ca coloana implicită. Dacă argumentul constant_expression este utilizat împreună cu o coloană Microsoft.NET cadru de tip definit de utilizator, tip de implementare ar trebui să sprijine exprimarea constant_expression conversie explicită la un tip definit de utilizator.

Specifică coloana asociată cu definiția unui DEFAULT nivel de masă.

Aceasta indică faptul că valoarea specificată ca DEFAULT pentru argumentul constant_expression. este stocată într-o nouă coloană se adaugă la rândurile existente. Operator cu valori pot fi specificate numai dacă specificați opțiunea implicită în coloana de oferta ADD. În cazul în care coloana adăugată permite valori NULL și setează un operator VALORILOR, se adaugă o nouă coloană în rândurile existente, umplut cu valoarea implicită. În cazul în care declarația cu valori nu este specificată pentru coloane care permit o valoare NULL, o nouă coloană pentru rândurile existente, este umplut cu NULL. În cazul în care noua coloană nu permite valori NULL, valoarea implicită este stocată în toate rândurile, indiferent dacă VALORILOR Setați operatorul sau nu.

Restricție asigurarea integrității domeniului prin limitarea valori posibile care pot fi încorporate într-o coloană sau coloane.

Expresia logică utilizată într-o constrângere CHECK și returnează TRUE sau FALSE. Argumentul logical_expression. utilizate în constrângerile CHECK, nu pot conține referințe la alte tabele, dar se poate referi la alte coloane din același tabel în același rând. Expresia nu se poate referi la un tip de date alias.

Atunci când adăugarea de noi constrangeri sau CEC, toate datele existente sunt verificate pentru conformitate cu limitele, cu excepția cazului în care o specificați CU NOCHECK. În acest caz, în cazul în care încălcările depistate, punerea în aplicare a ALTER TABLE eșuează. Atunci când adaugă la o coloană existente PRIMARĂ constrângeri de cheie unică sau toate datele din coloana trebuie să fie unic. Dacă dovedit a fi valori duplicate, ALTER TABLE eșuează. Atunci când adăugați constrângeri cheie primară sau un parametru de disponibilitate unică, cu NOCHECK nu este important.

Fiecare cheie constrângere unic primar și creează un index. Numărul și constrângerile cheie unic primar nu poate duce la depășirea numărului limită de indici în tabelul (999 1 grupat și non-cluster). constrângerile străine cheie nu determină crearea automată a indicelui. Cu toate acestea, coloanele cheie străine sunt adesea folosite în criterii solicitări de conectare prin compararea coloana sau coloanele cheii externe a unui tabel cu o coloană sau coloane unei chei primare sau unice într-un alt tabel. coloanele de indicele de masă cheie străină permite componentei Database Engine pentru a găsi rapid datele legate în tabelul cheie externă.