• 18/10/2018
  • 6 minute de citit
    • o

    • O

    • l

In acest articol

Se aplica : Access 2013, Office 2013

O constrangere este similara cu un index, desi poate fi folosita si pentru a stabili o relatie cu un alt tabel.

Utilizati clauza CONSTRAINT in instructiunile ALTER TABLE si CREATE TABLE pentru a crea sau sterge constrangeri. Exista doua tipuri de clauze CONSTRAINT: una pentru crearea unei constrangeri pe un singur camp si una pentru crearea unei constrangeri pe mai multe campuri.

Nota

Motorul de baze de date Microsoft Access nu accepta utilizarea CONSTRAINT sau a oricarei declaratii cu limbaj de definire a datelor (DDL), cu baze de date care nu sunt Microsoft Access. Folositi in schimb metodele DAO Create .

Sintaxa

Constrangerea unui singur camp

Nume CONSTRAINT {CHEIE PRIMARA | UNIC | NU NUL | REFERINTE foreigntable [( foreignfield1, foreignfield2 )] [ON UPDATE CASCADE | SET NULL] [PE STERGEREA CASCADEI | SET NULL]}

Constrangere de camp multiplu

Numele CONSTRAINT {CHEIA PRIMARA ( primar1 [, primar2 [, …]]) | UNIC ( unic1 [, unic2 [, …]]) | NOT NULL ( notnull1 [, notnull2 [, …]]) | CHEIE STRAINA [FARA INDICE] ( ref1 [, ref2 [, …]]) REFERINTE tabel strain [( camp strain1 [, camp strain2 [, …]])] [LA ACTUALIZAREA CASCADEI | SET NULL] [PE STERGEREA CASCADEI | SET NULL]}

Clauza CONSTRAINT are urmatoarele parti:

Parte

Descriere

Nume

Numele constrangerii de creat.

primar1 , primar2

Numele campului sau campurilor care vor fi desemnate cheia primara.

unic1 , unic2

Numele campului sau campurilor care urmeaza sa fie desemnate ca cheie unica.

notnull1, notnull2

Numele campului sau campurilor care sunt restrictionate la valori care nu sunt nule.

ref1 , ref2

Numele unui camp sau a campurilor cu cheie straina care se refera la campurile dintr-un alt tabel.

tabel strain

Numele tabelului strain care contine campul sau campurile specificate de strain .

strain1 , strain2

Numele campului sau campurilor din tabelul strain specificat de ref1 , ref2 . Puteti omite aceasta clauza daca campul la care se face referinta este cheia principala a tabelului strain .

Observatii

Utilizati sintaxa pentru o constrangere cu un singur camp in clauza de definitie a campului a unei instructiuni ALTER TABLE sau CREATE TABLE imediat dupa specificarea tipului de date al campului.

videos porno casero españa fiestas porno
peliculas eroticas alemanas porno tv
miakalifa porni
maturehd amas de casa follando
se corre en el coño de su hija pornox
me gusta follar española follando
video sexo porno fiestas
amas de casa infieles incesto x
maduras masturbandose largeporntube
incesto subtitulado español tias corriendose
abuelas tragando leche todoporno
comic maduras pilladas desnudas
videos porno corridas internas madresxxx
fiestas porno maduras folladoras
mature.com maduras en la playa
porno gratis viejas mujer masturbandose
vecina mirona masturbaciones
videos actrices españolas desnudas p0rno
pajas caseras michelle jenner desnuda
se folla a su cuñada maduras sex

Utilizati sintaxa pentru o constrangere cu camp multiplu ori de cate ori utilizati cuvantul rezervat CONSTRAINT in afara unei clauze de definitie a campului intr-o instructiune ALTER TABLE sau CREATE TABLE.

Folosind CONSTRAINT puteti desemna un camp ca unul dintre urmatoarele tipuri de constrangeri:

  • Puteti utiliza cuvantul rezervat UNIC pentru a desemna un camp ca cheie unica. Aceasta inseamna ca nu exista doua inregistrari in tabel care pot avea aceeasi valoare in acest camp. Puteti constrange orice camp sau lista de campuri ca fiind unice. Daca o constrangere cu campuri multiple este desemnata ca o cheie unica, valorile combinate ale tuturor campurilor din index trebuie sa fie unice, chiar daca doua sau mai multe inregistrari au aceeasi valoare in doar unul dintre campuri.

  • Puteti utiliza cuvintele rezervate CHEIE PRIMARA pentru a desemna un camp sau un set de campuri dintr-un tabel ca cheie primara. Toate valorile din cheia primara trebuie sa fie unice si nu Nule si poate exista o singura cheie primara pentru un tabel.

    Nota

    Nu setati o constrangere PRIMARY KEY pe o masa care are deja o cheie primara; daca da, apare o eroare.

  • Puteti utiliza cuvintele rezervate cheie straina pentru a desemna un camp ca cheie straina. Daca cheia primara a tabelului strain consta din mai multe campuri, trebuie sa utilizati o definitie de constrangere cu campuri multiple, listand toate campurile de referinta, numele tabelului strain si numele campurilor de referinta din tabelul strain in aceeasi ordine in care sunt listate campurile de referinta. Daca campul sau campurile de referinta sunt cheia primara a tabelului strain, nu trebuie sa specificati campurile de referinta. In mod implicit, motorul bazei de date se comporta ca si cum cheia primara a tabelului strain ar fi campurile la care se face referire. Constrangerile cheii straine definesc actiuni specifice care trebuie efectuate atunci cand se modifica o valoare cheie primara corespunzatoare:

  • Puteti specifica actiuni care trebuie efectuate pe tabela externa pe baza unei actiuni corespunzatoare efectuate pe o cheie primara din tabelul pe care este definit CONSTRAINT. De exemplu, luati in considerare urmatoarea definitie pentru tabelul Clienti:

    CREATI TABEL Clienti (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

    Luati in considerare urmatoarea definitie a tabelului Comenzi, care defineste o relatie de cheie externa care face referire la cheia principala a tabelului Clienti:

    CREARE TABEL Comenzi (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Clienti LA ACTUALIZARE CASCADE PE CASCADE STERGERE

    Atat o clauza ON UPDATE CASCADE, cat si o clauza ON DELETE CASCADE sunt definite pe cheia externa. Clauza ON UPDATE CASCADE inseamna ca, daca identificatorul unui client (CustId) este actualizat in tabelul Clientului, actualizarea va fi in cascada prin tabelul Comenzi. Fiecare comanda care contine o valoare de identificare a clientului corespunzatoare va fi actualizata automat cu noua valoare. Clauza ON DELETE CASCADE inseamna ca, daca un client este sters din tabelul Client, toate randurile din tabelul Comenzi care contin aceeasi valoare de identificare a clientului vor fi sterse. Luati in considerare urmatoarea definitie diferita a comenzilor de tabel, utilizand actiunea SET NULL in loc de actiunea CASCADE:

    CREATI TABEL Comenzi (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENTE Clienti ON UPDATE SET NULL ON DELETE SET NULL

    Clauza ON UPDATE SET NULL inseamna ca, daca identificatorul unui client (CustId) este actualizat in tabela Client, valorile corespunzatoare ale cheii externe din tabelul Comenzi vor fi setate automat la NULL. In mod similar, clauza ON DELETE SET NULL inseamna ca, daca un client este sters din tabela Client, toate cheile straine corespunzatoare din tabelul Comenzi vor fi setate automat la NULL.

Pentru a preveni crearea automata a indexurilor pentru cheile straine, poate fi utilizat modificatorul NO INDEX. Aceasta forma de definitie a cheii straine trebuie utilizata numai in cazurile in care valorile indexului rezultate ar fi frecvent duplicate. In cazul in care valorile dintr-un index cu cheie straina sunt frecvent duplicate, utilizarea unui index poate fi mai putin eficienta decat simpla efectuare a scanarii unui tabel. Mentinerea acestui tip de index, cu randuri inserate si sterse din tabel, degradeaza performanta si nu ofera niciun beneficiu.

Exemplu

Acest exemplu creeaza un nou tabel numit ThisTable cu doua campuri de text.

Sub CreateTableX1 () Dim dbs as Database ‘Modificati aceasta linie pentru a include calea catre Northwind’ pe computer. Set dbs = OpenDatabase (“Northwind.mdb”) ‘Creati un tabel cu doua campuri de text. dbs.Executati “CREATE TABLE ThisTable” _ & “(FirstNAME CHAR, LastName CHAR);” dbs.Inchide End Sub

Acest exemplu creeaza un nou tabel numit MyTable cu doua campuri de text, un camp Data / Ora si un index unic format din toate cele trei campuri.

Sub CreateTableX2 () Dim dbs As Database ‘Modificati aceasta linie pentru a include calea catre Northwind’ pe computer. Set dbs = OpenDatabase (“Northwind.mdb”) ‘Creati un tabel cu trei campuri si un index’ unic format din toate cele trei campuri. dbs.Executati “CREATE TABLE MyTable” _ & “(FirstName CHAR, LastName CHAR,” _ & “DateOfBirth DATETIME,” _ & “CONSTRAINT MyTableConstraint UNIQUE” _ & “(FirstName, LastName, DateOfBirth));” dbs.Inchide End Sub

Acest exemplu creeaza un nou tabel cu doua campuri de text si un camp intreg . Campul SSN este cheia principala.

Sub CreateTableX3 () Dim dbs As Database ‘Modificati aceasta linie pentru a include calea catre Northwind’ pe computer. Setati dbs = OpenDatabase (“Northwind.mdb”) ‘Creati un tabel cu trei campuri si o cheie principala’. dbs.Executati “CREATE TABLE NewTable” _ & “(prenume CHAR, prenume CHAR,” _ & “SSN INTEGER CONSTRAINT MyFieldConstraint” _ & “PRIMARY KEY);” dbs.Inchide End Sub