On Tue, Apr 19, 2016 at 7:31 PM, [email protected] <[email protected]>
wrote:
>
> - Se users.code é empty, dá um default value = 1000
>
>
O que significa "empty"? Se for NULL, você pode simplesmente fazer numa
trigger do tipo BEFORE:
IF (NEW.code IS NULL) THEN
NEW.code = 1000;
END IF;
Mas, provavelmente você quer simplesmente setar um DEFAULT:
ALTER TABLE users ALTER code SET DEFAULT 1000;
> -
> - e increment_client_code em companies deve auto-incrementar pelo
> próximo client code
>
> O que fiz até agora:
>
> DROP FUNCTION IF EXISTS client_code_increment_count();
>> CREATE OR REPLACE FUNCTION "public"."client_code_increment_count" ()
>> RETURNS TABLE("code" INT) AS
>> $BODY$
>> SELECT MAX(CAST(users.code AS INT)) FROM users WHERE users.code ~ '^\d+$'
>> AND company_id = 2
>>
>
Me parece uma má ideia, principalmente porque está sujeito à condições de
corrida. Por que não usa uma sequence?
At.
--
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral