Apenas um UPDATE.
Com o código à cima,
IF (TG_OP = 'INSERT') THEN
> UPDATE public.companies SET client_code_increment =
> (client_code_increment + 1) WHERE id = NEW.company_id;
Mesmo que o usuário não incluísse data, ele atualizava para o próximo
valor. Isto estava errado.
Segue a
Só para deixar registrado.. consegui fazer funcionar, segue código para
futuras pesquisas:
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
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,'tes...@test.com','password','0','2016-05-03
> 00:01:01','2016-05-03 00:01:01','15');
- Note como eu não estou
hmm..
Conseguir fazer funcionar, da seguinte maneira:
CREATE OR REPLACE FUNCTION users_code_seq()
>RETURNS "trigger" AS $$
> BEGIN
>
> IF (TG_OP = 'INSERT') THEN
> UPDATE public.company_seqs SET last_seq = (last_seq + 1) WHERE
> company_id = NEW.company_id;
>
> END
>
> CREATE OR REPLACE FUNCTION users_code_seq()
>RETURNS "trigger" AS $$
> --DECLARE
> --code character varying;
> BEGIN
> IF (TG_OP = 'INSERT') THEN
> UPDATE public.company_seqs SET last_seq = (last_seq + 1) WHERE
> company_id = NEW.company_id;
>
> ELSEIF
Só atualizando a function tf_users_update_code_column..
Incluido o campo *AND NEW.code IS NULL , *para que o usuário possa incluir
o valor que quiser, e caso ele não inclua, a funcao insere os dados
necessário.
- Tinha esquecido dessa parte antes, por isto decidi postar todo o código
aqui
>
>
> 1 - Criando a funcao
>
> CREATE OR REPLACE FUNCTION tf_users_update_code_column()
> RETURNS trigger AS $$
>
> BEGIN
>
> IF NEW.company_id = 1 THEN
> NEW.code = NEXTVAL('c1_users_code_seq');
>
> ELSEIF NEW.company_id = 2 THEN
> NEW.code =
2016-05-04 1:40 GMT+12:00 Euler Taveira :
> On 03-05-2016 01:02, drum.lu...@gmail.com wrote:
> > 1 - cada usuário na tabela users faz parte de uma empresa, essa empresa
> > é "determinada" pela coluna company_id na tabela users.
> >
> > 2 - Cada usuário, inclui os dados
On 03-05-2016 01:02, drum.lu...@gmail.com wrote:
> 1 - cada usuário na tabela users faz parte de uma empresa, essa empresa
> é "determinada" pela coluna company_id na tabela users.
>
> 2 - Cada usuário, inclui os dados dentro de users.code, mas se ele não
> incluir, a sequencia faz o trabalho.
>
hmm.. na verdade preciso de algo a mais
1 - cada usuário na tabela users faz parte de uma empresa, essa empresa é
"determinada" pela coluna company_id na tabela users.
2 - Cada usuário, inclui os dados dentro de users.code, mas se ele não
incluir, a sequencia faz o trabalho.
A questão, é que
Olá pessoal, já resolvi fazendo dessa forma:
-- 1 - Creating the Sequence:
CREATE SEQUENCE users_code_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1000;
CACHE 1;
-- 2 - Setting the DEFAULT
ALTER TABLE public.users ALTER COLUMN code SET DEFAULT
Obrigado pela resposta, Matheus.
Fica aqui o que fiz:
-- 1 - Criando a Sequence:
CREATE SEQUENCE users_code_seq
> INCREMENT 1
> MINVALUE 1
> MAXVALUE 9223372036854775807
> START 1000;
> CACHE 1;
-- 2 - Determinando o value default
ALTER TABLE public.users ALTER
2016-04-20 19:47 GMT-03:00 drum.lu...@gmail.com :
> nao pode ser DEFAULT pois o usuário pode escolher em setar value de sua
> própria escolha
>
>
É exatamente pra isso que o DEFAULT serve, se o inserir um valor
explicitamente vai usar o que inseriu, se não inserir na coluna
On 21 April 2016 at 10:42, Matheus de Oliveira
wrote:
>
> On Tue, Apr 19, 2016 at 7:31 PM, drum.lu...@gmail.com <
> drum.lu...@gmail.com> wrote:
>
>>
>>- Se users.code é empty, dá um default value = 1000
>>
>>
> O que significa "empty"? Se for NULL, você pode
On Tue, Apr 19, 2016 at 7:31 PM, drum.lu...@gmail.com
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
Se usar nextval ao invés da coluna proposta é melhor, fique livre para
mudar...
também: o users.code value tem que ser único, já que o usuário pode setar
um de escolha, ele não pode escolher outro que já está sendo usado por
outro cliente.
___
Acabei enviando o e-mail errado e faltou informacões...
*Vamos lá novamente:*
Possuo duas tabelas:
*- users*
- code (Coluna)
*- companies*
- client_code_increment (Coluna)
A coluna users.code, recebe um código pelo cliente. Mas ele pode escolher
em não por nenhum dado lá.
Caso o
Olá,
Possuo duas tabelas:
- users
- companies
Estou tentando criar uma funcão que faca:
- Se users.code é empty, dá um default value = 1000
- e increment_client_code em companies deve auto-incrementar pelo
próximo client code
O que fiz até agora:
DROP FUNCTION IF EXISTS
Olá,
>
> Pagamentos em um estado pendente não podem ser faturados e são excluídos
> da sessão "invoice runs section"
>
>
> Não consigo localizar o erro para corrigi-lo...
>
>
> Podem dar uma luz? Se precisar de alguma info a mais posso fornecer.
>
> Obrigado!
>
> *Function:*
>
>> CREATE OR
Olá,
Pagamentos em um estado pendente não podem ser faturados e são excluídos da
sessão "invoice runs section"
Não consigo localizar o erro para corrigi-lo...
Podem dar uma luz? Se precisar de alguma info a mais posso fornecer.
Obrigado!
*Function:*
> CREATE OR REPLACE FUNCTION
20 matches
Mail list logo