Bonjour,
on me demande d'utiliser l'héritage dans un projet, mais j'ai quelques soucis avec mes procédures stockées.
J'ai créé deux tables pour faire des petits test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE users ( id serial NOT NULL, active boolean DEFAULT true, firstname character varying(40), "name" character varying(40), phonenumbers text, site_id integer, CONSTRAINT users_pkey PRIMARY KEY (id), CONSTRAINT users_site_id_fkey FOREIGN KEY (site_id) REFERENCES sites (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION )Jusque là, il me semble qu'il n'y a pas de problème, mais quand je veux rajouter des procédures stockées, ça plante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 CREATE TABLE superusers ( id serial NOT NULL, -- Hérité(e) from table superusers: active boolean DEFAULT true, -- Hérité(e) from table superusers: firstname character varying(40), -- Hérité(e) from table superusers: "name" character varying(40), -- Hérité(e) from table superusers: phonenumbers text, -- Hérité(e) from table superusers: site_id integer, rank character varying(40), CONSTRAINT superusers_pkey PRIMARY KEY (id) ) INHERITS (users)
Quand je tente d'ajouter ma procédure stockée au système, j'ai une erreur, que je ne comprend pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE OR REPLACE FUNCTION insert_superuser(Superusers) RETURNs BIGINT AS $$ INSERT INTO superusers VALUES(DEFAULT,$1.rank,$1.active,$1.firstname,$1.name,$1.phoneNumbers,$1.Site_id ); SELECT currval('Superusers_id_seq'::regclass); $$ LANGUAGE 'sql';
Pourquoi active serait un character varying ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ERROR: column "active" is of type boolean but expression is of type character varying HINT: You will need to rewrite or cast the expression. CONTEXT: SQL function "insert_superuser"
Ma procédure stockée insert_user(users) fonctionne pourtant.
Partager