Dynamically create scheme
Hi,
I am writing an installscript and I would like to create a schema
dynamically, based on a new input.
-- this is the trigger that calls the install script
CREATE TRIGGER tr_install_account AFTER INSERT
ON accounts FOR EACH ROW
EXECUTE PROCEDURE install();
-- the install script
1 CREATE OR REPLACE FUNCTION install() RETURNS TRIGGER
2 AS '
3 BEGIN
4 INSERT INTO bedrijven (kvk, account) VALUES (''00000000'', NEW.account);
5 INSERT INTO settings (account, logo) VALUES (NEW.account, '''');
6 CREATE SCHEMA NEW.account;
7 RETURN NEW;
8 END;
9 ' LANGUAGE 'plpgsql';
It goes wrong at line 9. I want to create a schema based on the accountname
supplied. But i cant get it to work. Does anybody know how i get it to work
or what reference i must read?
Regards,
Mick vd Most v Spijk
--
'It never hurts to help' -- Eek the Cat
I think you need to create a string variable on the function and use
EXECUTE.
---------------------------------------------------------------------------
Mick van der Most van Spijk wrote:
Hi,
I am writing an installscript and I would like to create a schema
dynamically, based on a new input.-- this is the trigger that calls the install script
CREATE TRIGGER tr_install_account AFTER INSERT
ON accounts FOR EACH ROW
EXECUTE PROCEDURE install();-- the install script
1 CREATE OR REPLACE FUNCTION install() RETURNS TRIGGER
2 AS '
3 BEGIN
4 INSERT INTO bedrijven (kvk, account) VALUES (''00000000'', NEW.account);
5 INSERT INTO settings (account, logo) VALUES (NEW.account, '''');6 CREATE SCHEMA NEW.account;
7 RETURN NEW;
8 END;
9 ' LANGUAGE 'plpgsql';It goes wrong at line 9. I want to create a schema based on the accountname
supplied. But i cant get it to work. Does anybody know how i get it to work
or what reference i must read?Regards,
Mick vd Most v Spijk
--
'It never hurts to help' -- Eek the Cat---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073