-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathImplementando_constraints.sql
133 lines (84 loc) · 3.22 KB
/
Implementando_constraints.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
-- Created on 3/14/2020 by DIEGO
SELECT * FROM TCONTRATO;
SELECT * FROM USER_CONSTRAINTS;
SELECT * FROM ALL_CONSTRAINTS;
-------------------------------------------
CREATE TABLE TCIDADE (
COD_CIDADE INTEGER NOT NULL,
NOME VARCHAR2(40),
CONSTRAINT PK_CIDADE PRIMARY KEY (COD_CIDADE)
);
CREATE TABLE TBAIRRO (
COD_CIDADE INTEGER NOT NULL,
COD_BAIRRO INTEGER NOT NULL,
NOME VARCHAR2(20),
CONSTRAINT PK_BAIRRO PRIMARY KEY (COD_CIDADE, COD_BAIRRO)
);
ALTER TABLE TBAIRRO
ADD CONSTRAINT FK_COD_CIDADE
FOREIGN KEY (COD_CIDADE)
REFERENCES TCIDADE (COD_CIDADE);
CREATE TABLE TRUA (
COD_RUA INTEGER NOT NULL,
COD_CIDADE INTEGER,
COD_BAIRRO INTEGER,
NOME VARCHAR2(40),
CONSTRAINT PK_RUA PRIMARY KEY (COD_RUA)
);
ALTER TABLE TRUA
ADD CONSTRAINT FK_CidadeBairro
FOREIGN KEY (COD_CIDADE, COD_BAIRRO)
REFERENCES TBAIRRO (COD_CIDADE, COD_BAIRRO);
CREATE TABLE TPESSOA (
COD_PESSOA INTEGER,
TIPO VARCHAR2(1) NOT NULL,
NOME VARCHAR2(30) NOT NULL,
PESSOA VARCHAR2(1) NOT NULL,
COD_RUA INTEGER NOT NULL,
CPF VARCHAR2(15),
CONSTRAINT PK_PESSOA PRIMARY KEY (COD_PESSOA)
);
ALTER TABLE TPESSOA ADD CONSTRAINT UK_CPF UNIQUE (CPF);
ALTER TABLE TPESSOA ADD CONSTRAINT FK_PESSOA_RUA FOREIGN KEY (COD_RUA) REFERENCES TRUA;
INSERT INTO TCIDADE VALUES (1, 'RECIFE');
INSERT INTO TCIDADE VALUES (2, 'OLINDA');
INSERT INTO TCIDADE VALUES (3, 'JABOATÃO');
INSERT INTO TCIDADE VALUES (4, 'PAULISTA');
INSERT INTO TCIDADE VALUES (5, 'GRAVATA');
SELECT * FROM TCIDADE;
INSERT INTO TBAIRRO VALUES (1, 1, 'CENTRO');
INSERT INTO TBAIRRO VALUES (2, 1, 'INTERIOR');
INSERT INTO TBAIRRO VALUES (3, 1, 'METRÓPOLE');
INSERT INTO TBAIRRO VALUES (4, 1, 'MEGALÓPOLE');
INSERT INTO TBAIRRO VALUES (5, 1, 'CENTRO');
INSERT INTO TBAIRRO VALUES (6, 1, 'SUBÚRBIO'); -- ERRO DE CHAVE
SELECT * FROM TBAIRRO;
INSERT INTO TRUA VALUES (1, 1, 1, 'ALMIRANTE');
INSERT INTO TRUA VALUES (2, 2, 1, 'DIAS FERNANDES');
INSERT INTO TRUA VALUES (3, 3, 1, 'BERNARDO VIEIRA DE MELO');
INSERT INTO TRUA VALUES (4, 3, 1, 'ADOLFO FERREIRA');
SELECT * FROM TRUA;
-- CHECK
SELECT * FROM TPESSOA;
ALTER TABLE TPESSOA ADD CONSTRAINT CK_PESSOA_TIPO CHECK (TIPO IN ('C', 'F'));
ALTER TABLE TPESSOA ADD CONSTRAINT CK_PESSOA_JF CHECK (PESSOA IN ('J', 'F'));
-- DROP CONSTRAINT
ALTER TABLE TPESSOA DROP CONSTRAINT NOME_CONSTRAINT;
INSERT INTO TPESSOA VALUES (1, 'C', 'DIEGO FERREIRA', 'F', 1, '12345678912');
INSERT INTO TPESSOA VALUES (2, 'F', 'ORACLE CORPORATION', 'J', 2, '23322365891527');
INSERT INTO TPESSOA VALUES (3, 'C', 'MARIA FERNANDA', 'F', 1, '12345678911');
INSERT INTO TPESSOA VALUES (4, 'F', 'C&A CORP', 'J', 3, '12545636987548');
INSERT INTO TPESSOA VALUES (4, 'H', 'PAULA GARCIA', 'J', 2, '12345678912555'); -- ERRO CHECK
ALTER TABLE TPESSOA DROP CONSTRAINT NOME_CONSTRAINT
CASCADE CONSTRAINT;
SELECT * FROM TCONTRATO;
ALTER TABLE TCONTRATO
ADD CONSTRAINT CK_CONTRATO_DESCONTO
CHECK (DESCONTO BETWEEN 0 AND 50);
ALTER TABLE TPESSOA DISABLE CONSTRAINT UK_CPF;
ALTER TABLE TPESSOA ENABLE CONSTRAINT UK_CPF;
ALTER TABLE TPESSOA
DROP CONSTRAINT UK_CPF
CASCADE CONSTRAINT; -- As vezes é necessário
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'TPESSOA';
SELECT CONSTRAINT_NAME, COLUMN_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'TPESSOA';