trigger que gera codigo de numero o.s (ordem de serviço) ou codigo do cliente
23/03/2021
0
o meu caso é o seguinte :
estou mexendo com o banco de dados mysql, para visualizar as tabelas estou usando navicat premium, a ide do sistema é o delphi radio studio 10.3.3.
tipo de sistema que estou criando: é um sistema de ordem de serviço
tipo do problema: na hora que vou abrir a ordem de serviço quando vou apertar o botao nova o.s na tabela abertura_os, coluna numero_os tem que gerar o numero da o.s no momento da inserção.
motivo da trigger eu tenho o id_os que já está no autoincrement porem quero que meu campo numero_os tambem gere autoincrement no momento que vou abrir a o.s so que não apareça por exemplo -1 e sim o numero negativo e se eu cancelar como não salvei ele não modifique ele simplemente cancele a opreção de inserção
alguem por favor me ajuda alguma alma caridosa
Socrates Foschera
Posts
24/03/2021
Emerson Nascimento
não apareça -1 e sim o número negativo???
24/03/2021
Socrates Foschera
não apareça -1 e sim o número negativo???
25/03/2021
Emerson Nascimento
digo isso porque sempre penso em um sistema multi-usuário.
vejamos o seguinte cenário:
a última OS gravada é a 000005.
daí estação1 e depois estação2 iniciam o processo de inclusão.
--- >>> se o sistema for baseado em autoincremento:
estação1 não receberá qualquer número, porque será incrementado somente ao efetivar a inclusão no banco de dados.
estação2 não receberá qualquer número, porque será incrementado somente ao efetivar a inclusão no banco de dados.
estação2 confirma a inclusão. número 000006 foi gerado. deve ser apresentado ao usuário.
estação1 confirma a inclusão. número 000007 foi gerado. deve ser apresentado ao usuário.
--- >>> se o sistema for baseado no último número + 1:
estação1 receberá o número 000006 (porque o último gravado é o 000005).
estação2 receberá o número 000006 (porque o último gravado é o 000005).
estação2 confirma a inclusão. número 000006 foi efetivado.
estação1 confirma a inclusão. número precisa trocar para 000007 (e avisar ao usuário).
--- >>> se o sistema for baseado no conceito de incremento ao incluir:
* é necessário ter uma tabela de sequenciadores (no Firebird isso é nativo, não sei como funciona no MySQL) *
estação1 receberá o número 000006
estação2 receberá o número 000007
estação2 confirma a inclusão. número 000007 foi efetivado.
estação1 CANCELA a inclusão. número 000006 será perdido.
qual procedimento será utilizado?
25/03/2021
Socrates Foschera
digo isso porque sempre penso em um sistema multi-usuário.
vejamos o seguinte cenário:
a última OS gravada é a 000005.
daí estação1 e depois estação2 iniciam o processo de inclusão.
--- >>> se o sistema for baseado em autoincremento:
estação1 não receberá qualquer número, porque será incrementado somente ao efetivar a inclusão no banco de dados.
estação2 não receberá qualquer número, porque será incrementado somente ao efetivar a inclusão no banco de dados.
estação2 confirma a inclusão. número 000006 foi gerado. deve ser apresentado ao usuário.
estação1 confirma a inclusão. número 000007 foi gerado. deve ser apresentado ao usuário.
--- >>> se o sistema for baseado no último número + 1:
estação1 receberá o número 000006 (porque o último gravado é o 000005).
estação2 receberá o número 000006 (porque o último gravado é o 000005).
estação2 confirma a inclusão. número 000006 foi efetivado.
estação1 confirma a inclusão. número precisa trocar para 000007 (e avisar ao usuário).
--- >>> se o sistema for baseado no conceito de incremento ao incluir:
* é necessário ter uma tabela de sequenciadores (no Firebird isso é nativo, não sei como funciona no MySQL) *
estação1 receberá o número 000006
estação2 receberá o número 000007
estação2 confirma a inclusão. número 000007 foi efetivado.
estação1 CANCELA a inclusão. número 000006 será perdido.
qual procedimento será utilizado?
29/03/2021
Socrates Foschera
digo isso porque sempre penso em um sistema multi-usuário.
vejamos o seguinte cenário:
a última OS gravada é a 000005.
daí estação1 e depois estação2 iniciam o processo de inclusão.
--- >>> se o sistema for baseado em autoincremento:
estação1 não receberá qualquer número, porque será incrementado somente ao efetivar a inclusão no banco de dados.
estação2 não receberá qualquer número, porque será incrementado somente ao efetivar a inclusão no banco de dados.
estação2 confirma a inclusão. número 000006 foi gerado. deve ser apresentado ao usuário.
estação1 confirma a inclusão. número 000007 foi gerado. deve ser apresentado ao usuário.
--- >>> se o sistema for baseado no último número + 1:
estação1 receberá o número 000006 (porque o último gravado é o 000005).
estação2 receberá o número 000006 (porque o último gravado é o 000005).
estação2 confirma a inclusão. número 000006 foi efetivado.
estação1 confirma a inclusão. número precisa trocar para 000007 (e avisar ao usuário).
--- >>> se o sistema for baseado no conceito de incremento ao incluir:
* é necessário ter uma tabela de sequenciadores (no Firebird isso é nativo, não sei como funciona no MySQL) *
estação1 receberá o número 000006
estação2 receberá o número 000007
estação2 confirma a inclusão. número 000007 foi efetivado.
estação1 CANCELA a inclusão. número 000006 será perdido.
qual procedimento será utilizado?
Clique aqui para fazer login e interagir na Comunidade :)