Estou tendo problemas para adequar a function ao que eu preciso:

INSERT INTO public.users
> (id,email,encrypted_password,sign_in_count,created_at,updated_at,company_id)
> VALUES (66,'[email protected]','password','0','2016-05-03
> 00:01:01','2016-05-03 00:01:01','15');


- Note como eu não estou fornecendo dados para a coluna "code". Recebo o
erro em seguida.

> ERROR:  query returned no rows
> CONTEXT:  PL/pgSQL function users_code_seq() line 7 at SQL statement


- Se eu incluir o valor como default, recebo o mesmo erro

> INSERT INTO public.users
> (id,email,encrypted_password,sign_in_count,created_at,updated_at,code,company_id)
> VALUES (4,'[email protected]','password','0','2016-05-03
> 00:01:01','2016-05-03 00:01:01',default,'2');

I get the same error

- Por favor, se alguém puder ajudar com isto... não sei onde estou
errando...

*Como estou fazendo meus tests?:*

*1 -*

CREATE OR REPLACE FUNCTION users_code_seq()
>    RETURNS "trigger" AS $$
> DECLARE code character varying;
> BEGIN
>         IF NEW.code IS NULL THEN
>         SELECT client_code_increment INTO STRICT NEW.code FROM
> public.companies WHERE id = NEW.id ORDER BY client_code_increment DESC;
>         END IF;
>         IF (TG_OP = 'INSERT') THEN
>         UPDATE public.companies SET client_code_increment =
> (client_code_increment + 1) WHERE id = NEW.id;
>         END IF;
>         RETURN NEW;
> END;
> $$ LANGUAGE plpgsql;


*2 - *

*companies.client_code_increment:*

ALTER TABLE public.companies ADD COLUMN client_code_increment integer;
> ALTER TABLE public.companies ALTER COLUMN client_code_increment SET NOT
> NULL;
> ALTER TABLE public.companies ALTER COLUMN client_code_increment SET
> DEFAULT 1000;


*3 - *

*Trigger:*

> CREATE TRIGGER tf_users_code_seq
>    BEFORE INSERT
>    ON public.users
>    FOR EACH ROW
>    EXECUTE PROCEDURE users_code_seq();




*4 - Insert dentro da tabela companies, para cadastrar duas empresas:*

> INSERT INTO
> public.companies(id,name,created_at,updated_at,client_code_increment)
> VALUES (1,'Company 1','2016-05-03 00:01:01','2016-05-03 00:01:01',default);
> - *PASS*
> INSERT INTO
> public.companies(id,name,created_at,updated_at,client_code_increment)
> VALUES (2,'Company 2','2016-05-03 00:01:01','2016-05-03
> 00:01:01',default);  *- PASS*


*5 - insert dentro da tabela users, para cadastrar os usuários:*

> INSERT INTO public.users
> (id,email,encrypted_password,sign_in_count,created_at,updated_at,code,company_id)
> VALUES (1,'[email protected]','password','0','2016-05-03
> 00:01:01','2016-05-03 00:01:01','default','2'); -
> *PASS*INSERT INTO public.users
> (id,email,encrypted_password,sign_in_count,created_at,updated_at,code,company_id)
> VALUES (2,'[email protected]','password','0','2016-05-03
> 00:01:01','2016-05-03 00:01:01',default,'1'); -
> *NO PASS*INSERT INTO public.users
> (id,email,encrypted_password,sign_in_count,created_at,updated_at,code,company_id)
> VALUES (3,'[email protected]','password','0','2016-05-03
> 00:01:01','2016-05-03 00:01:01',default,'2'); - *NO PASS*


Se alguém puder ajudar... obrigado.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a