Aggiungi un vincolo di controllo a una tabella esistente in Oracle

Aggiungi un vincolo di controllo a una tabella esistente in Oracle
Un vincolo di controllo ci consente di definire le espressioni logiche che possono restituire vere o false. Il motore del database valuta quindi tutti i dati inseriti o aggiornati in quella colonna per assicurarsi che aderisca alle regole di espressione.

Se i dati aderiscono alle regole di espressione, il motore del database accetta i dati e consente l'istruzione insert o aggiornamento. In caso contrario, se i dati non rispettano le leggi, il motore del database rifiuta i dati e nega l'operazione di inserto o aggiornamento.

Una singola colonna può avere uno o più vincoli di controllo, a condizione che non siano in conflitto con gli altri vincoli di controllo esistenti. Inoltre, non si dovrebbe assumere l'ordine di valutazione dell'espressione.

Allo stesso modo, puoi avere più di una colonna con un vincolo di controllo.

Regole di un vincolo di assegno in Oracle

Quando si definisce un vincolo di controllo nei database Oracle, assicurarsi di seguire queste regole:

  • Il vincolo di controllo è definito su una tabella Oracle, non una vista.
  • Il vincolo di controllo deve fare riferimento solo alle colonne in quella tabella e non in tabelle straniere.
  • Un vincolo di assegno non può essere definito in una sottoquery.
  • Un'espressione del vincolo di controllo non può includere funzioni non deterministiche, funzioni definite dall'utente, tabelle nidificate, colonne pseudo o attributi nidificati.

Sebbene sia consigliato di utilizzare un vincolo di controllo durante la creazione della tabella, è possibile incontrare tali scenari in cui è necessario aggiungere un vincolo di controllo a una tabella esistente.

Discutiamo di come possiamo farlo in un database Oracle.

Aggiungi una dichiarazione di vincolo di controllo

Per aggiungere un vincolo di controllo a una tabella di database esistente, utilizziamo l'istruzione Aggiungi alter Tdale. La sintassi è come mostrata:

Alter table table_name
Aggiungi vincoli vincoli_name check (check_constraint_expression);

Aggiungi un vincolo di controllo alla tabella esistente

Dimostriamo come aggiungere un vincolo di controllo a una tabella esistente. Iniziamo creando una tabella di test:

Crea table product_stock (
CHIAVE PRIMARIO NUMERO Product_id,
Product_Name Varchar2 (255),
Numero stock_quantity,
stock_level varchar2 (255)
);

La query precedente crea una tabella per archiviare le informazioni sull'inventario del prodotto. Quindi, aggiungi alcuni dati di esempio come mostrato nel seguente:

Inserisci in Product_stock (Product_id, Product_Name, stock_quantity, stock_level) valori (1, 'Product1', 100, 'in');
Inserisci in Product_stock (Product_id, Product_Name, stock_quantity, stock_level) valori (2, 'product2', 13, 'in');
Inserisci in Product_stock (Product_id, Product_Name, stock_quantity, stock_level) valori (3, 'Product3', 160, 'out');
Inserisci in Product_stock (Product_id, Product_Name, stock_quantity, stock_level) valori (4, 'product4', 10, 'in');
Inserisci in Product_stock (Product_id, Product_Name, stock_quantity, stock_level) valori (5, 'product5', 320, 'in');

Tabella risultante

Supponiamo di voler garantire che i dati inseriti abbiano una stock_quantity di oltre 100. Possiamo aggiungere un vincolo di controllo come segue:

Altera tabella Product_stock
Aggiungi vincolo validato_stock check (stock_quantity> = 100);

Ora, se tentiamo di aggiungere una riga con lo stock_quantity di meno di 100, otteniamo un errore come segue:

Inserisci in Product_stock (Product_id, Product_Name, stock_quantity, stock_level) valori (6, 'Product6', 60, 'out');

Errore

[23000] [2293] ORA-02293: Impossibile convalidare (HR.Convalida_stock) - Controllare il vincolo violato

Conclusione

Ecco qua! Un modo per aggiungere un vincolo di controllo a una tabella esistente nei database Oracle. Speriamo che tu abbia trovato questo articolo utile.