λογισμικό

* Γνώση Υπολογιστών >> λογισμικό >> λογισμικού βάσεων δεδομένων

Πώς να κάνω μια Περιορισμών deferrable σε Oracle

οι περιορισμοί που αποσκοπούν στην πρόληψη των ατυχημάτων στη διαχείριση δεδομένων και τη διατήρηση της ακεραιότητας των δεδομένων . Σε ορισμένες περιπτώσεις , όμως , μπορεί να είναι απαραίτητο να αναβάλει περιορισμούς , ώστε να μην εφαρμόσει πραγματικά τους κανόνες έως ότου πληρωθεί μια συγκεκριμένη κατάσταση . Για παράδειγμα , είναι δυνατόν να μετατεθούν οι κανόνες ενός περιορισμού να ενεργοποιηθεί μόνο όταν ένα « δεσμευτούν » έχει ζητηθεί . Οδηγίες
Η 1

Δημιουργήστε δύο πίνακες σε SQLPlus να αποδείξει περιορισμούς deferrable ως εξής :

CREATE TABLE δοκιμή (

test_id INTEGER PRIMARY KEY , πώληση

foreign_id μη ακέραιου NULL) ?

CREATE TABLE test2 (

test2_id INTEGER PRIMARY KEY , πώληση

foreign2_id INTEGER NOT NULL

) ?

2

Αλλάξτε τους πίνακες SQLPlus να προσθέσετε περιορισμούς ξένου κλειδιού μεταξύ τους ως εξής :

ALTER TABLE δοκιμή ADD CONSTRAINT test2REF

FOREIGN KEY ( foreign_ID ) ΠΑΡΑΠΟΜΠΕΣ test2 ( test2_ID )

ΑΡΧΙΚΑ ΔΕΔΟΥΛΕΥΜΕΝΑ deferrable ?

ALTER test2 ΠΙΝΑΚΑΣ ADD CONSTRAINT testREF

FOREIGN KEY δοκιμής ( foreign2_ID ) Αναφορές ( test_ID )

ΑΡΧΙΚΑ ΔΕΔΟΥΛΕΥΜΕΝΑ deferrable ?

Η 3

εγγραφές Εισαγωγή σε δύο πίνακες σε SQLPlus . Αυτό δείχνει ότι με deferrable περιορισμό , σειρές μπορούν να προστεθούν παρά τους περιορισμούς ξένου κλειδιού :

INSERT INTO ΑΞΙΕΣ δοκιμής ( 1 , 2 ) ?

INSERT INTO ΑΞΙΕΣ test2 ( 2 , 1 ) ?
Η 4

Commit τις πληροφορίες στη γραμμή SQLPlus με :

Δέσμευση ?

Αυτό θα ολοκληρώσει τη λειτουργία και τις γραμμές θα προστεθούν και στους δύο πίνακες

5

Επίδειξη πώς θα αποτύχει , εκτελώντας όλες τις εντολές και πάλι σε μια ενιαία λειτουργία , αλλά χωρίς την αναβαλλόμενη περιορισμό . Κατά τα SQLPlus εντολή πληκτρολογήστε:

- Πρώτη ρίξει τους πίνακες της

Drop δοκιμή πίνακα CASCADE περιορισμούς ?

Drop πίνακα test2 περιορισμούς CASCADE ?

- . - τώρα, εισαγάγετε όλες τις προηγούμενες εντολές , αλλά χωρίς τους περιορισμούς deferrable ως εξής :

CREATE TABLE δοκιμή (

test_id INTEGER PRIMARY KEY , πώληση

foreign_id INTEGER NOT NULL

) ?

CREATE TABLE test2 (

test2_id INTEGER PRIMARY KEY , πώληση

foreign2_id INTEGER NOT NULL

) ?

ALTER δοκιμή ΠΙΝΑΚΑΣ ADD CONSTRAINT test2REF

FOREIGN KEY ( foreign_id ) ΠΑΡΑΠΟΜΠΕΣ test2 ( test2_id ) ?

ALTER test2 ΠΙΝΑΚΑΣ ADD CONSTRAINT testREF

FOREIGN KEY δοκιμής ( foreign2_id ) Αναφορές ( test_id ) ?

INSERT INTO ΑΞΙΕΣ δοκιμής ( 1 , 2 ) ?

INSERT INTO ΑΞΙΕΣ test2 ( 2 , 1 ) ?

Αυτή η έκδοση του σεναρίου θα αποτύχει, όπως οι περιορισμοί έχουν δεν έχει αναβληθεί αναμονή ενός " ΔΕΣΜΕΥΣΗ " εντολή .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα