some plpgsql stuff
This commit is contained in:
@ -1,5 +0,0 @@
|
||||
CREATE OR REPLACE PROCEDURE clear_tables() AS $$
|
||||
DELETE FROM artist_website;
|
||||
DELETE FROM website;
|
||||
DELETE FROM artist;
|
||||
$$ LANGUAGE SQL;
|
@ -5,12 +5,14 @@ CREATE OR REPLACE PROCEDURE create_tables() AS $$
|
||||
|
||||
CREATE TABLE IF NOT EXISTS artist (
|
||||
id serial PRIMARY KEY,
|
||||
name text NOT NULL
|
||||
name text NOT NULL,
|
||||
CONSTRAINT a_name UNIQUE(name)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS website (
|
||||
id serial PRIMARY KEY,
|
||||
name text NOT NULL
|
||||
name text NOT NULL,
|
||||
CONSTRAINT w_name UNIQUE(name)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS artist_website (
|
||||
@ -19,6 +21,8 @@ CREATE OR REPLACE PROCEDURE create_tables() AS $$
|
||||
folder_path text,
|
||||
website_id integer,
|
||||
artist_id integer,
|
||||
CONSTRAINT aw_url UNIQUE(url),
|
||||
CONSTRAINT aw_folder_path UNIQUE(folder_path),
|
||||
CONSTRAINT aw_artist FOREIGN KEY (artist_id) REFERENCES artist (ID),
|
||||
CONSTRAINT aw_website FOREIGN KEY (website_id) REFERENCES website (ID)
|
||||
);
|
||||
|
18
sql/insert_url.sql
Normal file
18
sql/insert_url.sql
Normal file
@ -0,0 +1,18 @@
|
||||
CREATE OR REPLACE FUNCTION insert_url(in_url text) RETURNS integer AS $$
|
||||
BEGIN
|
||||
PERFORM * FROM artist_website aw
|
||||
WHERE aw.url = in_url;
|
||||
|
||||
IF FOUND THEN
|
||||
RETURN 1;
|
||||
END IF;
|
||||
|
||||
INSERT INTO artist_website (url) VALUES (in_url);
|
||||
|
||||
CALL set_artist_name(in_url);
|
||||
CALL set_website_name(in_url);
|
||||
CALL set_folder_path(in_url);
|
||||
|
||||
RETURN 0;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql STRICT;
|
@ -1,25 +0,0 @@
|
||||
CREATE OR REPLACE FUNCTION set_stuff() RETURNS trigger AS $$
|
||||
DECLARE
|
||||
temp_url text;
|
||||
BEGIN
|
||||
SELECT aw.url INTO temp_url FROM artist_website aw
|
||||
WHERE aw.id = NEW.id;
|
||||
|
||||
IF NOT FOUND THEN
|
||||
RAISE EXCEPTION 'No url has been found';
|
||||
END IF;
|
||||
|
||||
CALL set_artist_name(NEW.url);
|
||||
CALL set_website_name(NEW.url);
|
||||
CALL set_folder_path(NEW.url);
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- DROP TRIGGER IF EXISTS set_stuff_trigger ON artist_website;
|
||||
|
||||
CREATE OR REPLACE TRIGGER set_stuff_trigger AFTER INSERT ON artist_website
|
||||
FOR EACH ROW EXECUTE PROCEDURE set_stuff();
|
||||
|
||||
ALTER TABLE artist_website ENABLE TRIGGER set_stuff_trigger;
|
Reference in New Issue
Block a user