cascade insert into master detail
Oleg Noga <[email protected]> Tue, 4 Dec 2007 19:17:22 +0200
| Newsgroups | gmane.comp.gnu.enterprise.general |
|---|---|
| Message-ID | <[email protected]> |
Hello Reinhard, Is it possible to insert new row to master and some rows to detailt in same time? Database is test.sql spr_user_group.gfd: When i am only inserting new spr_user row it is ok. When i am only inserting new spr_usergroup row it is ok. When i am trying to insert a user with newly entered group list i have exception: -------------------------- An unexpected error has occured: null value in column "usergroup_user_id" violates not-null constraint . Please contact your system administrator. INSERT INTO spr_usergroup (usergroup_group_id) VALUES (%(new_usergroup_group_id)s) new_usergroup_group_id: 1 -------------------------- I have added 'primarykey' attribute to ds_spr_user datasource spr_user.gdf: When trying to insert new row have error: INSERT INTO spr_user (user_login, user_id, user_sign, user_name) VALUES (%(new_user_login)s, %(new_user_id)s, %(new_user_sign)s, %(new_user_name)s) new_user_login: u'1' new_user_sign: u'1' new_user_id: None new_user_name: u'1' What is 'rowid' datasource attribute? How datasource behaviour depends on primarykey, primarykeyseq and rowid attributes defined or not? -- Best regards, Oleg mailto:[email protected] _______________________________________________ Gnue mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnue
test.sql
(text/plain, 6 KB)
--
-- PostgreSQL database dump
--
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET escape_string_warning = off;
--
-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
--
COMMENT ON SCHEMA public IS 'Standard public schema';
--
-- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: postgres
--
CREATE PROCEDURAL LANGUAGE plpgsql;
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: spr_group; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
--
CREATE TABLE spr_group (
group_id integer NOT NULL,
group_name character varying(255) NOT NULL,
group_sysname character varying(50) NOT NULL
);
ALTER TABLE public.spr_group OWNER TO postgres;
--
-- Name: spr_group_group_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE spr_group_group_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.spr_group_group_id_seq OWNER TO postgres;
--
-- Name: spr_group_group_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
ALTER SEQUENCE spr_group_group_id_seq OWNED BY spr_group.group_id;
--
-- Name: spr_group_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('spr_group_group_id_seq', 6, true);
--
-- Name: spr_user; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
--
CREATE TABLE spr_user (
user_id integer NOT NULL,
user_login character varying(25) NOT NULL,
user_password character varying(250),
user_name character varying(250) NOT NULL,
user_sign character varying(250) NOT NULL
);
ALTER TABLE public.spr_user OWNER TO postgres;
--
-- Name: spr_usergroup; Type: TABLE; Schema: public; Owner: postgres; Tablespace:
--
CREATE TABLE spr_usergroup (
usergroup_id integer NOT NULL,
usergroup_user_id integer NOT NULL,
usergroup_group_id integer NOT NULL
);
ALTER TABLE public.spr_usergroup OWNER TO postgres;
--
-- Name: spr_user_group_user_group_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE spr_user_group_user_group_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.spr_user_group_user_group_id_seq OWNER TO postgres;
--
-- Name: spr_user_group_user_group_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
ALTER SEQUENCE spr_user_group_user_group_id_seq OWNED BY spr_usergroup.usergroup_id;
--
-- Name: spr_user_group_user_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('spr_user_group_user_group_id_seq', 48, true);
--
-- Name: spr_user_user_id_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE spr_user_user_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.spr_user_user_id_seq OWNER TO postgres;
--
-- Name: spr_user_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: postgres
--
ALTER SEQUENCE spr_user_user_id_seq OWNED BY spr_user.user_id;
--
-- Name: spr_user_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
--
SELECT pg_catalog.setval('spr_user_user_id_seq', 37, true);
--
-- Name: group_id; Type: DEFAULT; Schema: public; Owner: postgres
--
ALTER TABLE spr_group ALTER COLUMN group_id SET DEFAULT nextval('spr_group_group_id_seq'::regclass);
--
-- Name: user_id; Type: DEFAULT; Schema: public; Owner: postgres
--
ALTER TABLE spr_user ALTER COLUMN user_id SET DEFAULT nextval('spr_user_user_id_seq'::regclass);
--
-- Name: usergroup_id; Type: DEFAULT; Schema: public; Owner: postgres
--
ALTER TABLE spr_usergroup ALTER COLUMN usergroup_id SET DEFAULT nextval('spr_user_group_user_group_id_seq'::regclass);
--
-- Data for Name: spr_group; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY spr_group (group_id, group_name, group_sysname) FROM stdin;
1 Administrator ADMINISTRATOR
2 Manager MANAGER
3 Storeman STOREMAN
4 Analyst ANALYST
5 Guest GUEST
\.
--
-- Data for Name: spr_user; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY spr_user (user_id, user_login, user_password, user_name, user_sign) FROM stdin;
2 manager d41d8cd98f00b204e9800998ecf8427e Manager -
1 admin d41d8cd98f00b204e9800998ecf8427e Admin -
3 storeman d41d8cd98f00b204e9800998ecf8427e Storeman -
4 analyst d41d8cd98f00b204e9800998ecf8427e\n Analyst -
5 boss d41d8cd98f00b204e9800998ecf8427e Boss -
\.
--
-- Data for Name: spr_usergroup; Type: TABLE DATA; Schema: public; Owner: postgres
--
COPY spr_usergroup (usergroup_id, usergroup_user_id, usergroup_group_id) FROM stdin;
14 1 1
18 3 3
20 4 4
22 5 2
24 5 3
28 5 4
\.
--
-- Name: spr_group_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
--
ALTER TABLE ONLY spr_group
ADD CONSTRAINT spr_group_pkey PRIMARY KEY (group_id);
--
-- Name: spr_user_group_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
--
ALTER TABLE ONLY spr_usergroup
ADD CONSTRAINT spr_user_group_pkey PRIMARY KEY (usergroup_id);
--
-- Name: spr_user_pkey; Type: CONSTRAINT; Schema: public; Owner: postgres; Tablespace:
--
ALTER TABLE ONLY spr_user
ADD CONSTRAINT spr_user_pkey PRIMARY KEY (user_id);
--
-- Name: idx_group_id; Type: INDEX; Schema: public; Owner: postgres; Tablespace:
--
CREATE INDEX idx_group_id ON spr_usergroup USING btree (usergroup_group_id);
--
-- Name: idx_user_id; Type: INDEX; Schema: public; Owner: postgres; Tablespace:
--
CREATE INDEX idx_user_id ON spr_usergroup USING btree (usergroup_user_id);
--
-- Name: public; Type: ACL; Schema: -; Owner: postgres
--
REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON SCHEMA public FROM postgres;
GRANT ALL ON SCHEMA public TO PUBLIC;
--
-- PostgreSQL database dump complete
--
spr_user_group.gfd
(text/xml, 1.8 KB)
<?xml version="1.0"?> <!-- GFD generator --> <form name='spr_user' title="Users and groups"> <datasource name='ds_spr_user' connection='sales' prequery='Y' table = 'spr_user' /> <datasource name='ds_spr_usergroup' connection='sales' prequery='Y' table = 'spr_usergroup' master="ds_spr_user" masterlink="user_id" detaillink="usergroup_user_id" /> <datasource name='ds_spr_group' connection='sales' prequery='Y' table = 'spr_group' /> <logic> <block name='b_spr_user' datasource='ds_spr_user' rows = '5'> <field name = 'id' field = 'user_id' /> <field name = 'login' field = 'user_login' /> <field name = 'password' field = 'user_password' /> <field name = 'name' field = 'user_name' /> <field name = 'sign' field = 'user_sign' /> </block> <block name='b_spr_usergroup' datasource='ds_spr_usergroup' rows = '5'> <field name = 'id' field = 'usergroup_id' /> <field name = 'user_id' field = 'usergroup_user_id' /> <field name = 'group_id' field = 'usergroup_group_id' fk_source='ds_spr_group' fk_description="group_name" fk_key="group_id" /> </block> </logic> <layout> <page name="page"> <vbox> <hbox block='b_spr_user' label='User'> <vbox><label text='Name'/> <entry field = 'name' /></vbox> <vbox><label text='Login'/><entry field = 'login'/></vbox> <vbox><label text='Sign'/> <entry field = 'sign' /></vbox> <!--entry field = 'id' label = 'id' style='label' /--> </hbox> <vbox block='b_spr_usergroup' label='Groups'> <label text='Group list'/><entry field = 'group_id'/> <!--entry field = 'user_id' label = 'user_id'/--> </vbox> </vbox> </page> </layout> </form>
spr_user.gfd
(text/xml, 1022 B)
<?xml version="1.0"?> <!-- GFD generator --> <form name='spr_user' title="Users only"> <datasource name='ds_spr_user' connection='sales' prequery='Y' table = 'spr_user' primarykey = 'user_id' /> <logic> <block name='b_spr_user' datasource='ds_spr_user' rows = '5'> <field name = 'id' field = 'user_id' /> <field name = 'login' field = 'user_login' /> <field name = 'password' field = 'user_password' /> <field name = 'name' field = 'user_name' /> <field name = 'sign' field = 'user_sign' /> </block> </logic> <layout> <page name="page"> <vbox> <hbox block='b_spr_user' label='User'> <vbox><label text='Name'/> <entry field = 'name' /></vbox> <vbox><label text='Login'/><entry field = 'login'/></vbox> <vbox><label text='Sign'/> <entry field = 'sign' /></vbox> <!--entry field = 'id' label = 'id' style='label' /--> </hbox> </vbox> </page> </layout> </form>