Όρος CONSTRAINT

Ο όρος περιορισμός είναι παρόμοιος με τον όρο ευρετήριο, παρόλο που μπορεί να χρησιμοποιηθεί για να δημιουργηθεί μια σχέση με έναν άλλον πίνακα.

Μπορείτε να χρησιμοποιήσετε τον όρο CONSTRAINT στις προτάσεις ALTER TABLE και CREATE TABLE για να δημιουργήσετε ή να διαγράψετε περιορισμούς. Υπάρχουν δύο τύποι όρων CONSTRAINT: ένας για τη δημιουργία περιορισμού σε ένα μόνο πεδίο και ένας για τη δημιουργία περιορισμού σε περισσότερα από ένα πεδία.

ΣΗΜΕΙΩΣΗ : Ο μηχανισμός βάσεων δεδομένων της Microsoft Access δεν υποστηρίζει τη χρήση της πρότασης CONSTRAINT ή οποιασδήποτε από τις προτάσεις γλώσσας ορισμού δεδομένων, με βάσεις δεδομένων που δεν είναι της Microsoft Access. Αντί για αυτή, χρησιμοποιήστε τις μεθόδους Create του DAO.

Σύνταξη

Περιορισμός για ένα μόνο πεδίο:

CONSTRAINT όνομα {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES εξωτερικός_πίνακας [(εξωτερικό_πεδίο1, εξωτερικό_πεδίο2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Περιορισμός για πολλά πεδία:

CONSTRAINT όνομα
{PRIMARY KEY (πρωτεύον1[, πρωτεύον2 [, ...]]) |
UNIQUE (μοναδικό1[, μοναδικό2 [, ...]]) |
NOT NULL (μη_null1[, μη_null2 [, ...]]) |
FOREIGN KEY [NO INDEX] (αναφ1[, αναφ2 [, ...]]) REFERENCES εξωτερικός_πίνακας [(εξωτερικό_πεδίο1 [, εξωτερικό_πεδίο2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

Ο όρος CONSTRAINT έχει τα εξής τμήματα:

Τμήμα

Περιγραφή

όνομα

Το όνομα του περιορισμού που θα δημιουργηθεί.

πρωτεύον1, πρωτεύον2

Το όνομα του πεδίου ή των πεδίων που πρέπει να οριστεί ως πρωτεύον κλειδί.

μοναδικό1, μοναδικό2

Το όνομα του πεδίου ή των πεδίων που πρέπει να οριστεί ως μοναδικό κλειδί.

μη_null1, μη_null2

Το όνομα του πεδίου ή των πεδίων που περιορίζονται σε τιμές που δεν είναι Null.

αναφ1, αναφ2

Το όνομα ενός πεδίου ή πεδίων για εξωτερικό κλειδί που παραπέμπουν σε πεδία ενός άλλου πίνακα.

εξωτερικός_πίνακας

Το όνομα του στοιχείου εξωτερικός πίνακας που περιέχει το πεδίο ή τα πεδία που καθορίζονται από εξωτερικό_πεδίο.

εξωτερικό_πεδίο1, εξωτερικό_πεδίο2

Το όνομα του πεδίου ή των πεδίων στον εξωτερικό_πίνακα που καθορίζεται από τα στοιχεία αναφ1, αναφ2. Μπορείτε να παραλείψετε αυτόν τον όρο αν το πεδίο αναφοράς είναι το πρωτεύον κλειδί εξωτερικός_πίνακας.


Παρατηρήσεις

Μπορεί να χρησιμοποιήσετε τη σύνταξη για έναν περιορισμό ενός μόνο πεδίου στον όρο ορισμού πεδίου μιας πρότασης ALTER TABLE ή CREATE TABLE αμέσως μετά τον προσδιορισμό του τύπου δεδομένων του πεδίου.

Μπορεί να χρησιμοποιήσετε τη σύνταξη για έναν περιορισμό πολλών πεδίων, κάθε φορά που χρησιμοποιείτε τη δεσμευμένη λέξη CONSTRAINT εκτός ενός όρου ορισμού πεδίου σε μια πρόταση ALTER TABLE ή CREATE TABLE.

Με τη χρήση του όρου CONSTRAINT μπορείτε να ορίσετε ένα πεδίο ως έναν από τους ακόλουθους τύπους περιορισμών:

  • Μπορείτε να χρησιμοποιήσετε τη δεσμευμένη λέξη UNIQUE για να καθορίσετε ένα πεδίο ως μοναδικό αριθμό-κλειδί. Αυτό σημαίνει ότι δύο εγγραφές στον πίνακα δεν μπορούν να έχουν την ίδια τιμή σε αυτό το πεδίο. Μπορείτε να περιορίσετε οποιοδήποτε πεδίο ή λίστα πεδίων ως μοναδικά. Εάν ένας περιορισμός πολλών πεδίων έχει οριστεί ως μοναδικό κλειδί, οι συνδυασμένες τιμές όλων των πεδίων του ευρετηρίου πρέπει να είναι μοναδικές, ακόμη και αν δύο ή περισσότερες εγγραφές έχουν την ίδια τιμή σε ένα μόνο από τα πεδία.

  • Μπορείτε να χρησιμοποιήσετε τις δεσμευμένες λέξεις PRIMARY KEY, για να καθορίσετε ένα πεδίο ή σύνολο πεδίων σε έναν πίνακα ως πρωτεύον κλειδί. Όλες οι τιμές του πρωτεύοντος κλειδιού πρέπει να είναι μοναδικές και όχι Null και επιτρέπεται να υπάρχει μόνο ένα πρωτεύον κλειδί για έναν πίνακα.

    ΣΗΜΕΙΩΣΗ : Μην χρησιμοποιείτε έναν περιορισμό PRIMARY KEY σε έναν πίνακα που έχει ήδη ένα πρωτεύον κλειδί. Εάν το κάνετε, παρουσιάζεται σφάλμα.

  • Μπορείτε να χρησιμοποιήσετε τις δεσμευμένες λέξεις FOREIGN KEY για να καθορίσετε ένα πεδίο ως εξωτερικό κλειδί. Εάν το πρωτεύον κλειδί του εξωτερικού πίνακα αποτελείται από περισσότερα από ένα πεδία, πρέπει να χρησιμοποιήσετε έναν ορισμό περιορισμού για πολλά πεδία, με όλα τα αναφερόμενα πεδία, το όνομα του εξωτερικού πίνακα και τα ονόματα των αναφερόμενων πεδίων στον εξωτερικό πίνακα, με την ίδια σειρά που παρατίθενται τα αναφερόμενα πεδία. Εάν το αναφερόμενο πεδίο ή πεδία είναι το πρωτεύον κλειδί του εξωτερικού πίνακα, δεν πρέπει να καθορίσετε τα αναφερόμενα πεδία. Από προεπιλογή, ο μηχανισμός βάσεων δεδομένων συμπεριφέρεται όπως στην περίπτωση όπου το πρωτεύον κλειδί του εξωτερικού πίνακα είναι τα πεδία αναφοράς.

    Οι περιορισμοί εξωτερικού κλειδιού ορίζουν συγκεκριμένες ενέργειες που θα εκτελεστούν όταν αλλάξει μια αντίστοιχη τιμή πρωτεύοντος κλειδιού:

  • Μπορείτε να καθορίσετε τις ενέργειες που πρέπει να εκτελεστούν στον εξωτερικό πίνακα βάσει μιας αντίστοιχης ενέργειας που εκτελείται σε ένα πρωτεύον κλειδί στον πίνακα στον οποίο ορίζεται ο όρος CONSTRAINT. Για παράδειγμα, εξετάστε τον ακόλουθο ορισμό για τον πίνακα Customers.

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

Εξετάστε τον ακόλουθο ορισμό του πίνακα Orders, ο οποίος ορίζει μια σχέση εξωτερικού κλειδιού που παραπέμπει στο πρωτεύον κλειδί του πίνακα Customers.

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

Τόσο ο όρος ON UPDATE CASCADE όσο και ο όρος ON DELETE CASCADE ορίζονται στο εξωτερικό κλειδί. Ο όρος ON UPDATE CASCADE σημαίνει ότι εάν το αναγνωριστικό ενός πελάτη (CustId) ενημερωθεί στον πίνακα Customer, θα ενημερωθεί αντίστοιχα και ο πίνακας Orders. Κάθε παραγγελία που περιέχει μια αντίστοιχη τιμή αναγνωριστικού πελάτη θα ενημερωθεί αυτόματα με τη νέα τιμή. Ο όρος ON DELETE CASCADE σημαίνει ότι αν ένας πελάτης διαγραφεί από τον πίνακα Customer, όλες οι γραμμές στον πίνακα Orders που περιέχουν το ίδιο αναγνωριστικό πελάτη θα διαγραφούν.

Εξετάστε τον ακόλουθο διαφορετικό ορισμό του πίνακα Orders, χρησιμοποιώντας την ενέργεια SET NULL αντί της ενέργειας CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

Ο όρος ON UPDATE SET NULL σημαίνει ότι εάν το αναγνωριστικό ενός πελάτη (CustId) ενημερωθεί στον πίνακα Customer, οι αντίστοιχες τιμές εξωτερικού κλειδιού στον πίνακα Orders θα οριστούν αυτόματα στην τιμή NULL. Ο όρος ON DELETE SET NULL σημαίνει ότι εάν ένας πελάτης διαγραφεί από τον πίνακα Customer, όλες οι αντίστοιχες τιμές εξωτερικού κλειδιού στον πίνακα Orders θα οριστούν αυτόματα στην τιμή NULL.

Για να αποτρέψετε την αυτόματη δημιουργία ευρετηρίων για τα εξωτερικά κλειδιά, μπορείτε να χρησιμοποιήσετε τον τροποποιητή NO INDEX. Αυτή η μορφή ορισμού εξωτερικού κλειδιού πρέπει να χρησιμοποιείται μόνο σε περιπτώσεις όπου οι τιμές ευρετηρίου που προκύπτουν θα αναπαράγονται συχνά. Όταν οι τιμές σε ένα ευρετήριο εξωτερικού κλειδιού αναπαράγονται συχνά, η χρήση ευρετηρίου μπορεί να είναι λιγότερο αποτελεσματική από την απλή εκτέλεση σάρωσης του πίνακα. Η διατήρηση αυτού του τύπου ευρετηρίου, με την προσθήκη και διαγραφή γραμμών από τον πίνακα, μειώνει την απόδοση και δεν παρέχει κανένα όφελος.



Αναπτύξτε τις δεξιότητές σας
Εξερευνήστε το περιεχόμενο της εκπαίδευσης
Αποκτήστε πρώτοι τις νέες δυνατότητες
Γίνετε μέλος του Office Insider

Σας βοήθησαν αυτές οι πληροφορίες;

Σας ευχαριστούμε για τα σχόλιά σας!

Σας ευχαριστούμε για τα σχόλιά σας! Φαίνεται ότι μπορεί να είναι χρήσιμο να συνδεθείτε με έναν από τους συνεργάτες υποστήριξης του Office.

×