-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtable.sql
79 lines (64 loc) · 1.53 KB
/
table.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
BEGIN
EXECUTE IMMEDIATE 'DROP VIEW ShortPersons';
EXECUTE IMMEDIATE 'DROP TABLE Persons';
EXECUTE IMMEDIATE 'DROP TABLE PostalCodes';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
COMMIT;
CREATE TABLE Persons
(
PersonId INT,
LastName VARCHAR(255),
FirstName VARCHAR(255),
Address VARCHAR(255),
ZipCode INT
);
CREATE TABLE PostalCodes
(
ZipCode INT,
City VARCHAR(255),
PRIMARY KEY (ZipCode)
);
INSERT INTO Persons
VALUES (1, 'Junior', 'Me', 'Best address', 3013);
INSERT INTO Persons
VALUES (2, 'Senior', 'Me', 'Best address', 3013);
INSERT INTO Persons
VALUES (3, 'Old', 'You', '2nd Best address', 39100);
INSERT INTO Persons
VALUES (4, 'Young', 'You', '2nd Best address', 39100);
CREATE TRIGGER NewPostalCode
AFTER INSERT
ON PostalCodes
FOR EACH ROW
BEGIN
dbms_output.put_line('Created new Postalcode entry, ZipCode: ' || :NEW.ZipCode || ', City: ' || :NEW.City);
END;
INSERT INTO PostalCodes
VALUES (3013, 'Bern');
INSERT INTO PostalCodes
VALUES (39100, 'Bozen');
DROP TRIGGER NewPostalCode;
COMMIT;
SELECT *
FROM Persons;
CREATE VIEW ShortPersons AS
SELECT LastName, FirstName
FROM Persons;
SELECT *
FROM ShortPersons;
CREATE UNIQUE INDEX UniquePersonIdIndex ON Persons (PersonId);
CREATE INDEX NameIndex ON Persons (LastName, FirstName);
DROP INDEX UniquePersonIdIndex;
ALTER TABLE Persons
ADD PRIMARY KEY (PersonId);
ALTER TABLE Persons
ADD FOREIGN KEY (ZipCode) REFERENCES PostalCodes (ZipCode);
BEGIN
dbms_output.put_line('Created, inserted and dropped table Persons');
END;
/