Ajuda com 'CHECK'

5 respostas Resolvido
bancopostgresql
G

Ahm… Eu não me lembro de como usar o “check” em BD, eu usei uma vez pra determinar as posições de jogadores de futebol em um trabalho, mas acabei esquecendo, e todo os outros exemplos que pesquisei até agora só me mostram com números… Tipo, "(Cod > 0), e eu quero que o ‘check’ faça com as opções ‘terceirizado’ e ‘funcionário’…


CREATE TABLE entregador(
mat_entregador VARCHAR(11) PRIMARY KEY,
nome VARCHAR(100),
entregador VARCHAR(15),
CHECK (‘TERCEIRIZADO’ OR ‘FUNCIONÁRIO’)
)


5 Respostas

J

Em tese bastaria fazer o mesmo processo!

Exemplo:

Create Table Pessoa(
  idPessoa Integer,
  nomePessoa Varchar(200),
  indSexo char(1) Constraint chk_ind_sexo Check(indSexo = 'M' or indSexo = 'F')
);
G

Valeu! Eu tinha feito quase a mesma coisa, esse de usar “char(1)” e tinha apagado, agora vou refazer e tentar fazer outra vez…

G

Eu coloquei assim, e tá dando um erro sobre não existir uma coluna “X”

// ERROR: column “X” does not exist

CREATE TABLE CLIENTE(
TELEFONE VARCHAR(11) UNIQUE NOT NULL,
NOME VARCHAR(100) NOT NULL,
ENDERECO VARCHAR(100) NOT NULL,
VIP CHAR(1) CHECK (VIP = “X”)
)

Tmbm coloquei pra testar:

VIP CHAR(1) CHECK (VIP = “S” OR VIP = “N”)

Mas dá o mesmo erro, porém no lugar do “X” tem o “S”

J
Solucao aceita

Tenta com a sintaxe neste formato abaixo:

Create Table Cliente(
	telefone Varchar(11) Unique Not Null,
	nome Varchar(100) Not Null,
	endereco Varchar(100) Not Null,
	vip Char(1) Check(vip In('S','N'))
)
G

Ah, aí sim, funcionou perfeitamente! Só tive que colocar uma “Primary Key” em ‘telefone’, por que quando eu abri a tabela, não tava dando pra inserir os dados, acho que se colocasse um “Insert” podia funcionar de inserir…

Criado 15 de maio de 2018
Ultima resposta 22 de mai. de 2018
Respostas 5
Participantes 2