Already changed source_name keys in deploy_depends_on to use the new
[dbsrgits/DBIx-Class-ResultSource-MultipleTableInheritance.git] / t / sql / Cafe-0.1-PostgreSQL.sql
CommitLineData
c8e085ba 1--
2-- Created by SQL::Translator::Producer::PostgreSQL
8f839b1c 3-- Created on Sun Jul 11 20:05:37 2010
c8e085ba 4--
5--
6-- Table: _coffee
7--
8DROP TABLE "_coffee" CASCADE;
9CREATE TABLE "_coffee" (
10 "id" serial NOT NULL,
11 "flavor" text DEFAULT 'good' NOT NULL,
12 PRIMARY KEY ("id")
13);
14
15--
16-- Table: _sumatra
17--
18DROP TABLE "_sumatra" CASCADE;
19CREATE TABLE "_sumatra" (
20 "id" integer NOT NULL,
21 "aroma" text NOT NULL,
22 PRIMARY KEY ("id")
23);
24
25--
26-- Table: sugar
27--
28DROP TABLE "sugar" CASCADE;
29CREATE TABLE "sugar" (
30 "id" serial NOT NULL,
31 "sweetness" integer NOT NULL,
32 PRIMARY KEY ("id")
33);
34
35--
36-- View: "coffee"
37--
38DROP VIEW IF EXISTS "coffee";
39CREATE VIEW "coffee" ( "id", "flavor" ) AS
40 SELECT _coffee.id, flavor FROM _coffee;
41
42CREATE OR REPLACE FUNCTION coffee_insert
43 (_flavor TEXT)
44 RETURNS VOID AS $function$
45 BEGIN
46 INSERT INTO _coffee ( flavor) VALUES ( _flavor );
47 END;
48$function$ LANGUAGE plpgsql;
49
50
51CREATE OR REPLACE FUNCTION coffee_update
52 (_id INTEGER, _flavor TEXT)
53 RETURNS VOID AS $function$
54 BEGIN
55 UPDATE _coffee SET flavor = _flavor WHERE ( id = _id );
56 END;
57$function$ LANGUAGE plpgsql;
58
59
60CREATE OR REPLACE FUNCTION coffee_delete
61 (_id INTEGER)
62 RETURNS VOID AS $function$
63 BEGIN
64 DELETE FROM _coffee WHERE ( id = _id );
65 END;
66$function$ LANGUAGE plpgsql;
67
68
69CREATE RULE _coffee_insert_rule AS
70 ON INSERT TO coffee
71 DO INSTEAD (
72 SELECT coffee_insert(NEW.flavor)
73 );
74
75
76CREATE RULE _coffee_update_rule AS
77 ON UPDATE TO coffee
78 DO INSTEAD (
79 SELECT coffee_update(OLD.id, NEW.flavor)
80 );
81
82
83CREATE RULE _coffee_delete_rule AS
84 ON DELETE TO coffee
85 DO INSTEAD (
86 SELECT coffee_delete(OLD.id)
87 );
88
89;
90
91--
92-- View: "sumatra"
93--
94DROP VIEW IF EXISTS "sumatra";
95CREATE VIEW "sumatra" ( "id", "flavor", "sweetness", "aroma" ) AS
96 SELECT _sumatra.id, aroma, sweetness, flavor FROM _sumatra _sumatra JOIN sugar sugar ON sugar.id = _sumatra.id JOIN coffee coffee ON coffee.id = _sumatra.id;
97
98CREATE OR REPLACE FUNCTION sumatra_insert
99 (_aroma TEXT, _sweetness INTEGER, _flavor TEXT)
100 RETURNS VOID AS $function$
101 BEGIN
102 INSERT INTO coffee ( flavor) VALUES ( _flavor );
103 INSERT INTO _sumatra ( aroma, id) VALUES ( _aroma, currval('_coffee_id_seq') );
104 INSERT INTO sugar ( id, sweetness) VALUES ( currval('_coffee_id_seq'), _sweetness );
105 END;
106$function$ LANGUAGE plpgsql;
107
108
109CREATE OR REPLACE FUNCTION sumatra_update
110 (_id INTEGER, _aroma TEXT, _sweetness INTEGER, _flavor TEXT)
111 RETURNS VOID AS $function$
112 BEGIN
113 UPDATE _sumatra SET aroma = _aroma WHERE ( id = _id );
114 UPDATE sugar SET sweetness = _sweetness WHERE ( id = _id );
115 UPDATE coffee SET flavor = _flavor WHERE ( id = _id );
116 END;
117$function$ LANGUAGE plpgsql;
118
119
120CREATE OR REPLACE FUNCTION sumatra_delete
121 (_id INTEGER)
122 RETURNS VOID AS $function$
123 BEGIN
124 DELETE FROM _sumatra WHERE ( id = _id );
125 DELETE FROM sugar WHERE ( id = _id );
126 DELETE FROM coffee WHERE ( id = _id );
127 END;
128$function$ LANGUAGE plpgsql;
129
130
131CREATE RULE _sumatra_insert_rule AS
132 ON INSERT TO sumatra
133 DO INSTEAD (
134 SELECT sumatra_insert(NEW.aroma, NEW.sweetness, NEW.flavor)
135 );
136
137
138CREATE RULE _sumatra_update_rule AS
139 ON UPDATE TO sumatra
140 DO INSTEAD (
141 SELECT sumatra_update(OLD.id, NEW.aroma, NEW.sweetness, NEW.flavor)
142 );
143
144
145CREATE RULE _sumatra_delete_rule AS
146 ON DELETE TO sumatra
147 DO INSTEAD (
148 SELECT sumatra_delete(OLD.id)
149 );
150
151;
152