If exists

Estou com uma dúvida em criar uma trigger no banco de dados que é um before insert quero fazer uma verificação se o dado digitado pelo usuario e igual que esta no banco para não haver valores repetidos, pesquisei um pouco sobre o IF EXISTS para isso o problema é o seguinte.

quero comparar o dadorealizadopelousuario == dadonacoluna
Se existir não inserir registro
senao
Inseri um novo registro

Você não precisa de uma trigger: é para isso que coisas como chaves primárias e campos unique existem. Com eles, o próprio banco se encarrega de fazer ou não a verificação de valores repetidos. Estude sobre eles.

Abraço.

Acho que uma trigger pra isso é matar mosquito com canhão. Isso que vc está descrevendo me parece ser uma regra do negócio. Não sei da sua arquitetura, mas eu colocaria esse tipo de coisa numa camada mais externa da aplicação (mas cada caso é um caso…). Se fosse uma aplicação MVC eu colocaria isso no Controller.

Não use uma trigger para isso. Chaves primárias e índices únicos resolvem seu problema (como mencionado por @TerraSkilll) de forma muito mais elegante.

Dá uma olhada nesse link e neste outro aqui.

Procure como fazer isso no banco de dados que vc estiver usando.

Essa é a situação existe tres tabelas uma armazena os dados dos alunos outro das turma e a outra aluno_turma fiz uma chave composta na tabela ‘aluno_turma’ para que o banco não cadastre o aluno na mesma turma duas vezes, mais fazendo alguns testes percebe que o banco de dados cadastra o aluno em outra turma mais no mesmo horario da outra turma que foi cadastrado, se não é no mesmo horario é no mesmo curso. Ou seja quero que o banco faça essa verificação e retorne um erro.

Como poderia resolver essa situação no MySQL ou no sistema?

Essas são as tabelas

CREATE TABLE IF NOT EXISTS CursoTDB.Aluno (
IdAluno INT(11) NOT NULL AUTO_INCREMENT,
NomeAluno VARCHAR(100) NOT NULL,
Endereco VARCHAR(255) NOT NULL,
Email VARCHAR(50) NOT NULL,
Telefone VARCHAR(13) NOT NULL,
Cpf VARCHAR(11) NOT NULL,
Status INT(11) NULL DEFAULT NULL,
PRIMARY KEY (IdAluno),
UNIQUE INDEX Cpf_UNIQUE (Cpf ASC))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;

CREATE TABLE IF NOT EXISTS CursoTDB.Turma (
idTurma INT(11) NOT NULL AUTO_INCREMENT,
DataInicio DATE NOT NULL,
HoraInicio VARCHAR(5) NOT NULL,
Status INT(11) NULL DEFAULT NULL,
Curso_IdCurso INT(11) NOT NULL,
Professor_IdProfessor INT(11) NOT NULL,
PRIMARY KEY (idTurma),
INDEX fk_Turma_Curso_idx (Curso_IdCurso ASC),
INDEX fk_Turma_Professor1_idx (Professor_IdProfessor ASC),
CONSTRAINT fk_Turma_Curso
FOREIGN KEY (Curso_IdCurso)
REFERENCES CursoTDB.Curso (IdCurso)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_Turma_Professor1
FOREIGN KEY (Professor_IdProfessor)
REFERENCES CursoTDB.Professor (IdProfessor)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;

CREATE TABLE IF NOT EXISTS CursoTDB.Aluno_Turma (
Turma_idTurma INT(11) NOT NULL,
Aluno_IdAluno INT(11) NOT NULL,
INDEX fk_Aluno_Turma_Turma1_idx (Turma_idTurma ASC),
INDEX fk_Aluno_Turma_Aluno1_idx (Aluno_IdAluno ASC),
PRIMARY KEY (Turma_idTurma, Aluno_IdAluno),
CONSTRAINT fk_Aluno_Turma_Turma1
FOREIGN KEY (Turma_idTurma)
REFERENCES CursoTDB.Turma (idTurma)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT fk_Aluno_Turma_Aluno1
FOREIGN KEY (Aluno_IdAluno)
REFERENCES CursoTDB.Aluno (IdAluno)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;

Pelo que entendi, você precisa de uma restrição por horário também. Essa pode ser uma restrição à parte, que poderia ser implantada via campos unique, mas também via trigger.

Abraço.