4
respostas

Como impedir que um mesmo registro seja cadastrado duas vezes, como deixar como único?

Estou usando o Node, e quero deixar o meu campo Código que tenho nomeu formulário ser como único, ou seja não poder cadastrar algo com o mesmo código, o uqe fazer?

router.post('/', auth, (req, res, next) => {
    const id = parseInt(req.params.id);
    const obj = req.body;
    obj.usuarioInsertId = req.payload.sub;

    Banco.create(obj)
      .then(() => {
        res.status(201);
        res.send();
      })
      .catch(ex => {
        res.status(400);
        res.send(ex);
      });
  });
4 respostas

Fala ai Rafael, beleza ?

Você esta usando NodeJS com qual banco de dados?

Fico no aguardo

Fala ai Matheus, estou utilizando o MySQL

Beleza, então cria uma constraint:

constraint uk[NOME_TABELA][NUMERO_CONSTANTE] unique (COLUNA);

Imagine que temos a tabela Pessoa e estamos criando a primeira constraint:

constraint ukpessoa01 unique (codigo);

Caso sua tabela já esteja criada, para adicionar faça:

alter table pessoa add constraint ukpessoa01 unique (codigo);

OBS: Esse campo código, talvez fosse melhor deixá-lo como Primary Key e auto increment:

codigo integer not null auto_increment,
constraint pkpessoa primary key(codigo)

Espero ter ajudado, também temos curso de MySQL aqui na alura.

Matheus, eu estou usando TypeScript, e se eu quisesse colocar uma mensagem caso isso exista na Grid?

getValidationMessages(): { [key: string]: { [key: string]: string; }; } {
        return {
            bancoCodigoBC: {
                required: 'Código obrigatório',
                hasProperty: 'Código preenchido incorretamente'
            },
            bancoRazaoSocial: {
                required: 'Campo Razão Social é obrigatório'
            },
            bancoCNPJ: {
                required: 'Campo CNPJ é obrigatório'
            },
        }
    }