trigger que gera codigo de numero o.s (ordem de serviço) ou codigo do cliente

MySQL

Delphi

23/03/2021

boa noite não sei se já foi resolvido alguma cituação porem não estou achando em lugar nenhum por isso comunidade devmedia se foi postado errado me desculpe

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

Socrates Foschera

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

23/03/2021

não entendi:

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


não apareça -1 e sim o número negativo???
GOSTEI 0
Socrates Foschera

Socrates Foschera

23/03/2021

não entendi:

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


não apareça -1 e sim o número negativo???
é o seguinte estou desenvolvendo um sistema de pdv e geração de ordem de serviço preciso que na ordem de serviço me mostre o numero da o.s assim que clicar no botao novo
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

23/03/2021

um número sequencial apresentado em tela para o usuário numa inclusão deve ser "perdido" ao cancelar o processo.
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?
GOSTEI 0
Socrates Foschera

Socrates Foschera

23/03/2021

um número sequencial apresentado em tela para o usuário numa inclusão deve ser "perdido" ao cancelar o processo.
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?
cara não entedi eu so quero gerar o numero da o.s no modo de edição do banco de dado e não sei como fazer a trigger
GOSTEI 0
Socrates Foschera

Socrates Foschera

23/03/2021

um número sequencial apresentado em tela para o usuário numa inclusão deve ser "perdido" ao cancelar o processo.
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?
cara não entedi eu so quero gerar o numero da o.s no modo de edição do banco de dado e não sei como fazer a trigger
boa noite pessoal do devemedia preciso de uma resposta precisa, a pergunta é a seguinte como faço para numero tipo 1,2,3,....... no delphi já possuo o id como auto incremento, preciso que o outro campo gere este sequencial sem alterar o id o campo é o numero_os como faço
GOSTEI 0
POSTAR