36 lines
840 B
PL/PgSQL
36 lines
840 B
PL/PgSQL
ALTER TABLE collection ADD COLUMN online BOOLEAN NOT NULL DEFAULT FALSE;
|
|
|
|
CREATE INDEX collection_online_idx ON collection (online);
|
|
|
|
--
|
|
-- trigger to run whenever a collection row is added/updated that fills in
|
|
-- the online column in that collection row
|
|
--
|
|
|
|
CREATE OR REPLACE FUNCTION set_collection_row_online_column()
|
|
RETURNS TRIGGER
|
|
AS $set_collection_row_online_column$
|
|
BEGIN
|
|
IF NEW.quality = 'online' THEN
|
|
NEW.online := TRUE;
|
|
ELSE
|
|
NEW.online := FALSE;
|
|
END IF;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$set_collection_row_online_column$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER collection_set_online_trigger
|
|
BEFORE INSERT OR UPDATE ON collection
|
|
FOR EACH ROW EXECUTE PROCEDURE set_collection_row_online_column();
|
|
|
|
|
|
--
|
|
-- fill in correct online column value in any existing collection rows
|
|
--
|
|
|
|
UPDATE collection
|
|
SET online = TRUE
|
|
WHERE quality = 'online';
|