Jump to content
Cleudiney T Brandão

Criar coluna em tabela que aceite NULL e UNIQUE

Recommended Posts

Pessoal alguém me dá uma ajuda com Mysql por favor.
Tenho uma coluna em meu BD que precisaria o seguinte: 
Ela não é obrigatória mas se preenchida não poderia ter outras ocorrências dela.
É um campo que ao meu ver seria UNIQUE mas que aceitasse NULL.

Share this post


Link to post
Share on other sites

UNIQUE aceita normalmente "parâmetros" nulos em sua coluna,

segue exemplo:

 

SQL

CREATE TABLE users (
  idUser INT NOT NULL AUTO_INCREMENT,
  nome VARCHAR(100) NOT NULL,
  chave INT,
  PRIMARY KEY(idUser),
  UNIQUE (chave)
);

INSERT INTO users (nome, chave) VALUES 
('Jadson e Judson', 29992),
('Judson e Jadson', NULL),
('Judson', NULL);

 

RESULTADO

image.png.0e3fbbbff3200c5a9b4b10b9e442d845.png

Share this post


Link to post
Share on other sites

Crie uma verificação, segue exemplo:

 

CÓDIGO

<?php
	if ( $_POST ) {
		# VERIFICA O POST 'CAMPO' CHAVE
		if ( $_POST [ 'chave' ] == 0 ) {
			$_POST [ 'chave' ] = NULL;
		}

		$pdo = new PDO ( 'mysql:host=localhost;dbname=imasters', 'root', '' );
		$pdo->setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

		$stmt = $pdo->prepare ( 'INSERT INTO users (nome, chave) VALUES (?, ?)' );
		$stmt->bindValue (1, $_POST [ 'nome' ]);
		$stmt->bindValue (2, $_POST [ 'chave' ]);
		$stmt->execute ();

		if ( $stmt->rowCount () > 0 ) {
			$stmt = $pdo->prepare ( 'SELECT * FROM users' );
			$stmt->execute ();

			$ret = $stmt->fetchAll ( PDO::FETCH_OBJ );

			echo "<pre>";
			var_dump (
				$ret
			);
		}
	}
?>

<!DOCTYPE html>
<html>
	<head>
		<title> EXAMPLE </title>
	</head>

	<body>
		<form action="#" method="post">
			<label>Nome: </label>
			<input type="text" name="nome" />
			<br />
			<label>Chave: </label>
			<input type="number" name="chave" />
			<br />
			<br />
			<input type="submit" value="enviar" />
		</form>
	</body>
</html>

 

Share this post


Link to post
Share on other sites

Disponível ;)

 

E sim, existe sim! O SQL tem funções de verificação também, porém acho até mais fácil por PHP rsrsrs

Share this post


Link to post
Share on other sites
14 horas atrás, Cleudiney T Brandão disse:

porém quando ele vém de um POST e não está preenchido o mysql o assume como 0 e avisa que o campo é duplicado.

Se o comando INSERT tiver nulo fica nulo no Banco !

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Leonardo Ortega
      Prezados, bom dia.
      sou novo por aqui, e me deparei com esta situação:
      estou desenvolvendo um projeto e tudo começou quando apenas mudei o banco de dados que estava conectado. Ou seja, se eu me conecto ao baco de dados anterior, volta todo código html, porém, se conecto ao banco de dados atual as divs desaparecem. 
       
      obs: Isso tb acontece quando eu desativo o php tudo volta como a imagem 1 e se eu ativo fica como a imagem2.
       
      quem pode me ajudar.. desde já muito obrigado.  


    • By dhebryhan
      #importar a biblioteca
      import pymysql
      #conexao com banco de dados
      conexao = pymysql.connect(
          host    = "localhost",
          user    = "root",
          passwd  = "123456",
          db      = "dbMegasena"
      )

      cursor = conexao.cursor()
      #gerando combinacoes dos numeros
      for dez1 in range(60):
          for dez2 in range(dez1+1,60):
              for dez3 in range(dez2+1,60):
                  for dez4 in range(dez3+1,60):
                      for dez5 in range(dez4+1,60):
                          for dez6 in range(dez5+1,60):
                             #total += 1
                              sql_data = (dez1 + 1, dez2 + 1, dez3 + 1, dez4 + 1, dez5 + 1, dez6 + 1)
                              sql = "INSERT INTO combinacoesMega (bola01, bola02, bola03, bola04, bola05, bola06) VALUES(?, ?, ?, ?, ?, ?)"
                              cursor.execute(sql, sql_data)
    • By luigiferrari
      Boa Tarde, sou iniciante no php, mas acho q isso seria coisa simples de se fazer. Porem não estou conseguindo...
      Se puderem me ajudar. 
      Agradeço desde já!


    • By guzulino
      Então... eu preciso inserir uma paulada de dados em um banco de dados de vez em quando, eu até consigo importar de um CSV pro banco, mas eu preciso fazer isso através do php e eu não tenho nem ideia de como fazer isso, procurei por aqui e não achei, se alguém tem alguma resposta ou referência, manda o link que eu vou dar uma olhada. Valeu.
    • By DouglasVitor
      Boa tarde,
      Estou a pelo menos 3 semanas tentando instalar o MySQL Server no Windows 10 Pro, mas sem sucesso.
      Baixo o instalador mas no momento de obstar o MySQL Server, apresenta uma mensagem de falha. Tentei a versão mais nova e antiga, mas a falha e a mesma. Alguém poderia me ajudar com este problema? É necessário alguma configuração no Windows?
      Desde já agradeço.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.