On Tuesday, May 3, 2016, drum.lu...@gmail.com <drum.lu...@gmail.com> wrote:

>
>    - This is what I did...
>
> -- Creating the tableCREATE TABLE public.company_seqs(company_id BIGINT NOT 
> NULL,
> last_seq BIGINT NOT NULL DEFAULT 1000,CONSTRAINT company_seqs_pk PRIMARY KEY 
> (company_id));
>
> -- Creating the function
> CREATE OR REPLACE FUNCTION users_code_seq()
>    RETURNS "trigger" AS'
> BEGIN
>         UPDATE public.company_seqs
>                 SET last_seq = (last_seq + 1)
>                 WHERE company_id = NEW.company_id;
>         SELECT INTO NEW.code last_seq
>                 FROM public.company_seqs WHERE company_id = NEW.company_id;
>         END IF;
>         RETURN new;
> END
> '
>
>         LANGUAGE 'plpgsql' VOLATILE;
> -- Creating the triggerCREATE TRIGGER tf_users_code_seq
>    BEFORE INSERT
>    ON public.users
>    FOR EACH ROW
>    EXECUTE PROCEDURE users_code_seq();
>
>
> When inserting data:
>
> INSERT INTO public.users 
> (id,email,encrypted_password,sign_in_count,created_at,updated_at,code,company_id)
>  VALUES (672,'te...@test.com 
> <javascript:_e(%7B%7D,'cvml','te...@test.com');>','bucefalo','0','2016-05-03 
> 00:01:01','2016-05-03 00:01:01',default,'1');
> INSERT INTO public.users 
> (id,email,encrypted_password,sign_in_count,created_at,updated_at,code,company_id)
>  VALUES (672,'te...@test.com 
> <javascript:_e(%7B%7D,'cvml','te...@test.com');>','bucefalo','0','2016-05-03 
> 00:01:01','2016-05-03 00:01:01','inserting my own data code column','1');
>
>
>    -
>
>    On the first query, nothing happens on the users.code column. The
>    column is null.
>    -
>
>    On the second query, I can see the "inserting my own data code column"
>    inserted into the code column. This means my Trigger function is not
>    working.. I don't know why.
>
>
> This sounds like database pollution...

I'd suggest writing a psql script that can be executed against an empty
database and does everything you want it to do.  Execute it against an
empty database.  Capture the output to a file with echo all.  Post the
script and the output.

Also, try "update returning"

I would also advise adding STRICT.

David J.

Reply via email to