Changeset 10196 for mb_server/trunk/admin/sql
- Timestamp:
- 2008-07-30 11:31:10 (4 months ago)
- Files:
-
- mb_server/trunk/admin/sql/CreateFKConstraints.sql (modified) (3 diffs)
- mb_server/trunk/admin/sql/CreateFunctions.sql (modified) (9 diffs)
- mb_server/trunk/admin/sql/CreatePrimaryKeys.sql (modified) (3 diffs)
- mb_server/trunk/admin/sql/CreateTables.sql (modified) (5 diffs)
- mb_server/trunk/admin/sql/CreateTriggers.sql (modified) (8 diffs)
- mb_server/trunk/admin/sql/DropFKConstraints.sql (modified) (3 diffs)
- mb_server/trunk/admin/sql/DropFunctions.sql (modified) (1 diff)
- mb_server/trunk/admin/sql/DropPrimaryKeys.sql (modified) (3 diffs)
- mb_server/trunk/admin/sql/DropTables.sql (modified) (3 diffs)
- mb_server/trunk/admin/sql/DropTriggers.sql (modified) (1 diff)
- mb_server/trunk/admin/sql/updates/20080610-1.sql (modified) (1 diff)
- mb_server/trunk/admin/sql/updates/20080610-2.sql (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
mb_server/trunk/admin/sql/CreateFKConstraints.sql
r9856 r10196 51 51 REFERENCES artist(id); 52 52 53 ALTER TABLE artist_meta 54 ADD CONSTRAINT fk_artist_meta_artist 55 FOREIGN KEY (id) 56 REFERENCES artist(id); 57 53 58 ALTER TABLE artist_relation 54 59 ADD CONSTRAINT artist_relation_fk_artist1 … … 112 117 REFERENCES country(id); 113 118 119 ALTER TABLE label_meta 120 ADD CONSTRAINT fk_label_meta_label 121 FOREIGN KEY (id) 122 REFERENCES label(id); 123 114 124 ALTER TABLE labelalias 115 125 ADD CONSTRAINT labelalias_fk_ref … … 576 586 REFERENCES artist(id); 577 587 588 ALTER TABLE track_meta 589 ADD CONSTRAINT fk_track_meta_track 590 FOREIGN KEY (id) 591 REFERENCES track(id); 592 578 593 ALTER TABLE track_tag 579 594 ADD CONSTRAINT fk_track_tag_track mb_server/trunk/admin/sql/CreateFunctions.sql
r9871 r10196 98 98 99 99 --'----------------------------------------------------------------- 100 -- Keep lastupdated columns up to date101 --'-----------------------------------------------------------------102 103 create or replace function b_iu_update_lastmodified () returns TRIGGER as '104 begin105 NEW.lastupdate = now();106 IF (TG_RELNAME = ''track'')107 THEN108 -- update the releases109 UPDATE album SET lastupdate = NOW() FROM albumjoin WHERE NEW.id = albumjoin.track and albumjoin.album = album.id;110 END IF;111 IF (TG_RELNAME = ''album'')112 THEN113 -- update the artist114 IF (NEW.artist != 1)115 THEN116 UPDATE artist SET lastupdate = NOW() WHERE artist.id = NEW.artist;117 END IF;118 END IF;119 return NEW;120 end;121 ' language 'plpgsql';122 123 --'-----------------------------------------------------------------124 100 -- Keep rows in albummeta in sync with album 125 101 --'----------------------------------------------------------------- … … 127 103 create or replace function insert_album_meta () returns TRIGGER as $$ 128 104 begin 129 insert into albummeta (id, tracks, discids, puids ) values (NEW.id, 0, 0, 0);105 insert into albummeta (id, tracks, discids, puids, lastupdate) values (NEW.id, 0, 0, 0, now()); 130 106 insert into album_amazon_asin (album, lastupdate) values (NEW.id, '1970-01-01 00:00:00'); 131 107 … … 140 116 update album_amazon_asin set lastupdate = '1970-01-01 00:00:00' where album = NEW.id; 141 117 end if; 118 UPDATE albummeta SET lastupdate = now() WHERE id = NEW.id; 142 119 return NULL; 143 120 end; … … 153 130 154 131 --'----------------------------------------------------------------- 132 -- Keep rows in <entity>_meta table in sync with table <entity> 133 --'----------------------------------------------------------------- 134 135 create or replace function a_idu_entity () returns TRIGGER as $$ 136 begin 137 IF (TG_OP = 'INSERT') 138 THEN 139 EXECUTE 'INSERT INTO ' || TG_RELNAME || '_meta (id) VALUES (' || NEW.id || ')'; 140 ELSIF (TG_OP = 'DELETE') 141 THEN 142 EXECUTE 'DELETE FROM ' || TG_RELNAME || '_meta WHERE id = ' || OLD.id; 143 ELSIF (TG_OP = 'UPDATE') 144 THEN 145 EXECUTE 'UPDATE ' || TG_RELNAME || ' SET lastupdate = now() WHERE id = ' || NEW.id; 146 END IF; 147 RETURN NULL; 148 end; 149 $$ language 'plpgsql'; 150 151 --'----------------------------------------------------------------- 152 -- Propagates changes on <entity>_meta to linked entities metadata 153 --'----------------------------------------------------------------- 154 create or replace function a_idu_entity_meta () returns TRIGGER as $$ 155 declare 156 entity_id track_meta.id%TYPE; 157 begin 158 IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN 159 entity_id := NEW.id; 160 ELSE 161 entity_id := OLD.id; 162 END IF; 163 164 IF (TG_RELNAME = 'track_meta') THEN 165 -- update the releases 166 UPDATE albummeta SET lastupdate = NOW() 167 WHERE id IN (SELECT distinct album FROM albumjoin WHERE entity_id = albumjoin.track); 168 ELSIF (TG_RELNAME = 'albummeta') THEN 169 -- update the artist 170 UPDATE artist_meta SET lastupdate = NOW() 171 WHERE id = (SELECT artist FROM album where id = entity_id) 172 -- Skip Various artists 173 AND id <> 1; 174 END IF; 175 RETURN NULL; 176 end; 177 $$ language 'plpgsql'; 178 --'----------------------------------------------------------------- 155 179 -- Changes to albumjoin could cause changes to albummeta.tracks 156 -- and/or albummeta.puids and/or galbummeta.puids180 -- and/or albummeta.puids and/or albummeta.puids 157 181 --'----------------------------------------------------------------- 158 182 … … 161 185 UPDATE albummeta 162 186 SET tracks = tracks + 1, 163 puids = puids + (SELECT COUNT(*) FROM puidjoin WHERE track = NEW.track) 187 puids = puids + (SELECT COUNT(*) FROM puidjoin WHERE track = NEW.track), 188 lastupdate = now() 164 189 WHERE id = NEW.album; 165 166 -- When a track is added to an album, update the albums lastupdate167 UPDATE album SET lastupdate = NOW() WHERE album.id = NEW.album;168 190 169 191 return NULL; … … 180 202 UPDATE albummeta 181 203 SET tracks = tracks - 1, 182 puids = puids - (SELECT COUNT(*) FROM puidjoin WHERE track = OLD.track) 204 puids = puids - (SELECT COUNT(*) FROM puidjoin WHERE track = OLD.track), 205 lastupdate = now() 183 206 WHERE id = OLD.album; 184 207 185 208 UPDATE albummeta 186 209 SET tracks = tracks + 1, 187 puids = puids + (SELECT COUNT(*) FROM puidjoin WHERE track = NEW.track) 210 puids = puids + (SELECT COUNT(*) FROM puidjoin WHERE track = NEW.track), 211 lastupdate = now() 188 212 WHERE id = NEW.album; 189 190 -- When a track is added to an album, update the albums lastupdate191 UPDATE album SET lastupdate = NOW() WHERE album.id = NEW.album;192 213 193 214 return NULL; … … 199 220 UPDATE albummeta 200 221 SET tracks = tracks - 1, 201 puids = puids - (SELECT COUNT(*) FROM puidjoin WHERE track = OLD.track) 222 puids = puids - (SELECT COUNT(*) FROM puidjoin WHERE track = OLD.track), 223 lastupdate = now() 202 224 WHERE id = OLD.album; 203 204 -- When a track is removed from an album, update the albums lastupdate205 UPDATE album SET lastupdate = NOW() WHERE album.id = OLD.album;206 225 207 226 return NULL; … … 378 397 UPDATE albummeta SET firstreleasedate = ( 379 398 SELECT MIN(releasedate) FROM release WHERE album = $1 380 ) WHERE id = $1;399 ), lastupdate = now() WHERE id = $1; 381 400 RETURN; 382 401 END; 383 402 ' LANGUAGE 'plpgsql'; 384 403 385 CREATE OR REPLACE FUNCTION a_ins_release () RETURNS TRIGGER AS '404 CREATE OR REPLACE FUNCTION a_ins_release () RETURNS TRIGGER AS $$ 386 405 BEGIN 387 406 EXECUTE set_album_firstreleasedate(NEW.album); 388 UPDATE album SET lastupdate = NOW() WHERE id = NEW.album;389 407 RETURN NEW; 390 408 END; 391 'LANGUAGE 'plpgsql';392 393 CREATE OR REPLACE FUNCTION a_upd_release () RETURNS TRIGGER AS '409 $$ LANGUAGE 'plpgsql'; 410 411 CREATE OR REPLACE FUNCTION a_upd_release () RETURNS TRIGGER AS $$ 394 412 BEGIN 395 413 EXECUTE set_album_firstreleasedate(NEW.album); … … 398 416 EXECUTE set_album_firstreleasedate(OLD.album); 399 417 END IF; 400 UPDATE album SET lastupdate = NOW() WHERE id = NEW.album;401 418 RETURN NEW; 402 419 END; 403 'LANGUAGE 'plpgsql';404 405 CREATE OR REPLACE FUNCTION a_del_release () RETURNS TRIGGER AS '420 $$ LANGUAGE 'plpgsql'; 421 422 CREATE OR REPLACE FUNCTION a_del_release () RETURNS TRIGGER AS $$ 406 423 BEGIN 407 424 EXECUTE set_album_firstreleasedate(OLD.album); 408 UPDATE album SET lastupdate = NOW() WHERE id = OLD.album;409 425 RETURN OLD; 410 426 END; 411 'LANGUAGE 'plpgsql';427 $$ LANGUAGE 'plpgsql'; 412 428 413 429 --'----------------------------------------------------------------- mb_server/trunk/admin/sql/CreatePrimaryKeys.sql
r9856 r10196 11 11 ALTER TABLE annotation ADD CONSTRAINT annotation_pkey PRIMARY KEY (id); 12 12 ALTER TABLE artist ADD CONSTRAINT artist_pkey PRIMARY KEY (id); 13 ALTER TABLE artist_meta ADD CONSTRAINT artist_meta_pkey PRIMARY KEY(id); 13 14 ALTER TABLE artistalias ADD CONSTRAINT artistalias_pkey PRIMARY KEY (id); 14 15 ALTER TABLE artist_relation ADD CONSTRAINT artist_relation_pkey PRIMARY KEY (id); … … 39 40 ALTER TABLE l_url_url ADD CONSTRAINT l_url_url_pkey PRIMARY KEY (id); 40 41 ALTER TABLE label ADD CONSTRAINT label_pkey PRIMARY KEY (id); 42 ALTER TABLE label_meta ADD CONSTRAINT label_meta_pkey PRIMARY KEY(id); 41 43 ALTER TABLE labelalias ADD CONSTRAINT labelalias_pkey PRIMARY KEY (id); 42 44 ALTER TABLE label_tag ADD CONSTRAINT label_tag_pkey PRIMARY KEY (label, tag); … … 83 85 ALTER TABLE tag ADD CONSTRAINT tag_pkey PRIMARY KEY (id); 84 86 ALTER TABLE track ADD CONSTRAINT track_pkey PRIMARY KEY (id); 87 ALTER TABLE track_meta ADD CONSTRAINT track_meta_pkey PRIMARY KEY(id); 85 88 ALTER TABLE track_tag ADD CONSTRAINT track_tag_pkey PRIMARY KEY (track, tag); 86 89 ALTER TABLE trackwords ADD CONSTRAINT trackwords_pkey PRIMARY KEY (wordid, trackid); mb_server/trunk/admin/sql/CreateTables.sql
r10192 r10196 30 30 modpending_lang INTEGER, 31 31 quality SMALLINT DEFAULT -1, 32 modpending_qual INTEGER DEFAULT 0, 33 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 32 modpending_qual INTEGER DEFAULT 0 34 33 ); 35 34 … … 67 66 firstreleasedate CHAR(10), 68 67 asin CHAR(10), 69 coverarturl VARCHAR(255) 68 coverarturl VARCHAR(255), 69 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 70 70 ); 71 71 … … 102 102 type SMALLINT, 103 103 quality SMALLINT DEFAULT -1, 104 modpending_qual INTEGER DEFAULT 0, 105 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 104 modpending_qual INTEGER DEFAULT 0 105 ); 106 107 CREATE TABLE artist_meta 108 ( 109 id INTEGER NOT NULL, 110 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 106 111 ); 107 112 … … 228 233 begindate CHAR(10), 229 234 enddate CHAR(10), 230 type SMALLINT, 231 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 235 type SMALLINT 236 ); 237 238 CREATE TABLE label_meta 239 ( 240 id INTEGER NOT NULL, 241 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 232 242 ); 233 243 … … 928 938 length INTEGER DEFAULT 0, 929 939 year INTEGER DEFAULT 0, 930 modpending INTEGER DEFAULT 0, 931 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 940 modpending INTEGER DEFAULT 0 941 ); 942 943 CREATE TABLE track_meta 944 ( 945 id INTEGER NOT NULL, 946 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 932 947 ); 933 948 mb_server/trunk/admin/sql/CreateTriggers.sql
r9870 r10196 1 1 \set ON_ERROR_STOP 1 2 2 3 CREATE TRIGGER b_iu_album BEFORE INSERT OR DELETE OR UPDATE ON album 4 FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified(); 3 -- Album related tables 5 4 6 -- These XXXX_album_meta() functions should really have the _meta dropped5 -- These XXXX_album_meta() functions should really have the _meta dropped 7 6 CREATE TRIGGER a_ins_album AFTER INSERT ON album 8 7 FOR EACH ROW EXECUTE PROCEDURE insert_album_meta(); … … 11 10 CREATE TRIGGER a_del_album after DELETE ON album 12 11 FOR EACH ROW EXECUTE PROCEDURE delete_album_meta(); 12 13 CREATE TRIGGER a_idu_albummeta AFTER INSERT OR DELETE OR UPDATE ON albummeta 14 FOR EACH ROW EXECUTE PROCEDURE a_idu_entity_meta(); 13 15 14 16 CREATE TRIGGER a_ins_albumjoin AFTER INSERT ON albumjoin … … 26 28 FOR EACH ROW EXECUTE PROCEDURE a_del_album_cdtoc(); 27 29 28 CREATE TRIGGER b_iu_artist BEFORE INSERT OR DELETE OR UPDATE ON artist 29 FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified(); 30 -- Artist 31 CREATE TRIGGER a_idu_artist AFTER INSERT OR DELETE OR UPDATE ON artist 32 FOR EACH ROW EXECUTE PROCEDURE a_idu_entity(); 33 CREATE TRIGGER a_idu_artist_meta AFTER INSERT OR DELETE OR UPDATE ON artist_meta 34 FOR EACH ROW EXECUTE PROCEDURE a_idu_entity_meta(); 30 35 36 -- Moderations 31 37 CREATE TRIGGER a_upd_moderation_open AFTER UPDATE ON moderation_open 32 38 FOR EACH ROW EXECUTE PROCEDURE after_update_moderation_open(); 33 39 40 -- Release events 34 41 CREATE TRIGGER b_iu_release BEFORE INSERT OR UPDATE ON release 35 42 FOR EACH ROW EXECUTE PROCEDURE before_insertupdate_release(); … … 41 48 FOR EACH ROW EXECUTE PROCEDURE a_del_release(); 42 49 50 -- album_amazon_asin 43 51 CREATE TRIGGER a_ins_album_amazon_asin AFTER INSERT ON album_amazon_asin 44 52 FOR EACH ROW EXECUTE PROCEDURE a_ins_album_amazon_asin(); … … 48 56 FOR EACH ROW EXECUTE PROCEDURE a_del_album_amazon_asin(); 49 57 50 create trigger b_iu_label BEFORE INSERT OR DELETE OR UPDATE ON label 51 FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified(); 58 -- Label 59 CREATE TRIGGER a_idu_label AFTER INSERT OR DELETE OR UPDATE ON label 60 FOR EACH ROW EXECUTE PROCEDURE a_idu_entity(); 61 CREATE TRIGGER a_idu_label_meta AFTER INSERT OR DELETE OR UPDATE ON label_meta 62 FOR EACH ROW EXECUTE PROCEDURE a_idu_entity_meta(); 52 63 64 -- PUIDs 53 65 CREATE TRIGGER a_ins_puidjoin AFTER INSERT ON puidjoin 54 66 FOR EACH ROW EXECUTE PROCEDURE a_ins_puidjoin(); … … 61 73 FOR EACH ROW EXECUTE PROCEDURE a_idu_puidjoin_stat(); 62 74 75 -- Tags 63 76 CREATE TRIGGER a_ins_artist_tag AFTER INSERT ON artist_tag 64 77 FOR EACH ROW EXECUTE PROCEDURE a_ins_tag(); … … 70 83 CREATE TRIGGER a_del_release_tag AFTER DELETE ON release_tag 71 84 FOR EACH ROW EXECUTE PROCEDURE a_del_tag(); 72 73 CREATE TRIGGER b_iu_track BEFORE INSERT OR DELETE OR UPDATE ON track74 FOR EACH ROW EXECUTE PROCEDURE b_iu_update_lastmodified();75 85 76 86 CREATE TRIGGER a_ins_track_tag AFTER INSERT ON track_tag … … 84 94 FOR EACH ROW EXECUTE PROCEDURE a_del_tag(); 85 95 96 -- Tracks 97 CREATE TRIGGER a_idu_track AFTER INSERT OR DELETE OR UPDATE ON track 98 FOR EACH ROW EXECUTE PROCEDURE a_idu_entity(); 99 CREATE TRIGGER a_idu_track_meta AFTER INSERT OR DELETE OR UPDATE ON track_meta 100 FOR EACH ROW EXECUTE PROCEDURE a_idu_entity_meta(); 101 86 102 -- vi: set ts=4 sw=4 et : mb_server/trunk/admin/sql/DropFKConstraints.sql
r9856 r10196 13 13 -- albummeta ? 14 14 ALTER TABLE albumwords DROP CONSTRAINT albumwords_fk_albumid; 15 ALTER TABLE artist_meta DROP CONSTRAINT fk_artist_meta_artist; 15 16 ALTER TABLE artist_relation DROP CONSTRAINT artist_relation_fk_artist1; 16 17 ALTER TABLE artist_relation DROP CONSTRAINT artist_relation_fk_artist2; … … 25 26 ALTER TABLE automod_election_vote DROP CONSTRAINT automod_election_vote_fk_automod_election; 26 27 ALTER TABLE automod_election_vote DROP CONSTRAINT automod_election_vote_fk_voter; 28 ALTER TABLE label_meta DROP CONSTRAINT fk_label_meta_track; 27 29 ALTER TABLE labelwords DROP CONSTRAINT labelwords_fk_labelid; 28 30 ALTER TABLE labelalias DROP CONSTRAINT labelalias_fk_ref; … … 123 125 ALTER TABLE script_language DROP CONSTRAINT script_language_fk_script; 124 126 ALTER TABLE track DROP CONSTRAINT track_fk_artist; 127 ALTER TABLE track_meta DROP CONSTRAINT track_meta_fk_track; 125 128 ALTER TABLE track_tag DROP CONSTRAINT fk_track_tag_track; 126 129 ALTER TABLE track_tag DROP CONSTRAINT fk_track_tag_tag; mb_server/trunk/admin/sql/DropFunctions.sql
r9870 r10196 25 25 DROP FUNCTION a_upd_puidjoin(); 26 26 DROP FUNCTION a_del_puidjoin(); 27 DROP FUNCTION b_iu_update_lastmodified(); 27 DROP FUNCTION a_idu_entity(); 28 DROP FUNCTION a_idu_entity_meta(); 28 29 29 30 -- vi: set ts=4 sw=4 et : mb_server/trunk/admin/sql/DropPrimaryKeys.sql
r9899 r10196 11 11 ALTER TABLE annotation DROP CONSTRAINT annotation_pkey; 12 12 ALTER TABLE artist DROP CONSTRAINT artist_pkey; 13 ALTER TABLE artist_meta DROP CONSTRAINT artist_meta_pkey; 13 14 ALTER TABLE artistalias DROP CONSTRAINT artistalias_pkey; 14 15 ALTER TABLE artist_relation DROP CONSTRAINT artist_relation_pkey; … … 39 40 ALTER TABLE l_url_url DROP CONSTRAINT l_url_url_pkey; 40 41 ALTER TABLE label DROP CONSTRAINT label_pkey; 42 ALTER TABLE label_meta DROP CONSTRAINT label_meta_pkey; 41 43 ALTER TABLE label_tag DROP CONSTRAINT label_tag_pkey; 42 44 ALTER TABLE labelalias DROP CONSTRAINT labelalias_pkey; … … 82 84 ALTER TABLE stats DROP CONSTRAINT stats_pkey; 83 85 ALTER TABLE track DROP CONSTRAINT track_pkey; 86 ALTER TABLE track_meta DROP CONSTRAINT track_meta_pkey; 84 87 ALTER TABLE track_tag DROP CONSTRAINT track_tag_pkey; 85 88 ALTER TABLE trackwords DROP CONSTRAINT trackwords_pkey; mb_server/trunk/admin/sql/DropTables.sql
r9856 r10196 10 10 DROP TABLE annotation; 11 11 DROP TABLE artist; 12 DROP TABLE artist_meta; 12 13 DROP TABLE artistalias; 13 14 DROP TABLE artistwords; … … 22 23 DROP TABLE gid_redirect; 23 24 DROP TABLE label; 25 DROP TABLE label_meta; 24 26 DROP TABLE labelwords; 25 27 DROP TABLE l_album_album; … … 77 79 DROP TABLE stats; 78 80 DROP TABLE track; 81 DROP TABLE track_meta; 79 82 DROP TABLE trackwords; 80 83 DROP TABLE url; mb_server/trunk/admin/sql/DropTriggers.sql
r9871 r10196 32 32 DROP TRIGGER a_ins_label_tag ON label_tag; 33 33 DROP TRIGGER a_del_label_tag ON label_tag; 34 DROP TRIGGER b_iu_artist ON artist; 35 DROP TRIGGER b_iu_album ON album; 36 DROP TRIGGER b_iu_track ON track; 37 DROP TRIGGER b_iu_label ON label; 34 DROP TRIGGER a_idu_artist ON artist; 35 DROP TRIGGER a_idu_track ON track; 36 DROP TRIGGER a_idu_label ON label; 37 DROP TRIGGER a_idu_artist_meta ON artist_meta; 38 DROP TRIGGER a_idu_track_meta ON track_meta; 39 DROP TRIGGER a_idu_label_meta ON label_meta; 40 DROP TRIGGER a_idu_albummeta ON albummeta; 38 41 39 42 -- vi: set ts=4 sw=4 et : mb_server/trunk/admin/sql/updates/20080610-1.sql
r9870 r10196 3 3 BEGIN; 4 4 5 -- Add timestamps to entities 6 alter table artist add column lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW(); 7 alter table album add column lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW(); 8 alter table label add column lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW(); 9 alter table track add column lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW(); 5 -- Introduces _meta tables containing entities metadata, starting with timestamps 6 CREATE TABLE artist_meta 7 ( 8 id INTEGER NOT NULL, 9 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 10 ); 11 12 CREATE TABLE label_meta 13 ( 14 id INTEGER NOT NULL, 15 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 16 ); 17 18 CREATE TABLE track_meta 19 ( 20 id INTEGER NOT NULL, 21 lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW() 22 ); 23 24 ALTER TABLE albummeta ADD COLUMN lastupdate TIMESTAMP WITH TIME ZONE DEFAULT NOW(); 25 26 -- primary keys 27 ALTER TABLE artist_meta ADD CONSTRAINT artist_meta_pkey PRIMARY KEY(id); 28 ALTER TABLE label_meta ADD CONSTRAINT label_meta_pkey PRIMARY KEY(id); 29 ALTER TABLE track_meta ADD CONSTRAINT track_meta_pkey PRIMARY KEY(id); 30 31 -- Initial population 32 33 INSERT INTO artist_meta (id) SELECT id FROM artist; 34 INSERT INTO label_meta (id) SELECT id FROM label; 35 INSERT INTO track_meta (id) SELECT id FROM track; 10 36 11 37 COMMIT; mb_server/trunk/admin/sql/updates/20080610-2.sql
r9871 r10196 10 10 -- create triggers 11 11 12 -- foreign keys 13 ALTER TABLE artist_meta 14 ADD CONSTRAINT fk_artist_meta_artist 15 FOREIGN KEY (id) 16 REFERENCES artist(id); 17 18 ALTER TABLE label_meta 19 ADD CONSTRAINT fk_label_meta_label 20 FOREIGN KEY (id) 21 REFERENCES label(id); 22 23 ALTER TABLE track_meta 24 ADD CONSTRAINT fk_track_meta_track 25 FOREIGN KEY (id) 26 REFERENCES track(id); 27 12 28 COMMIT; 13 29