Ir para conteúdo
Fórum Script Brasil
  • 0

Trigger


mestre fyoda

Pergunta

CREATE TABLE `accounts`
(
    `id` INT NOT NULL AUTO_INCREMENT,
    `password` VARCHAR(255) /* VARCHAR(32) for MD5*/ NOT NULL DEFAULT '',
    `type` INT NOT NULL DEFAULT 1,
    `premdays` INT NOT NULL DEFAULT 0,
    `lastday` INT UNSIGNED NOT NULL DEFAULT 0,
    `key` VARCHAR(20) NOT NULL DEFAULT '0',
    `email` VARCHAR(255) NOT NULL DEFAULT '',
    `blocked` TINYINT(1) NOT NULL DEFAULT FALSE,
    `warnings` INT NOT NULL DEFAULT 0,
    `group_id` INT NOT NULL DEFAULT 1,
    PRIMARY KEY (`id`),
    FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`)
) ENGINE = InnoDB;

CREATE TRIGGER `ondelete_accounts`
BEFORE DELETE
ON `accounts`
FOR EACH ROW
BEGIN
    DELETE FROM `bans` WHERE `account` = OLD.`id`;
END;

Como a minha trigger vai saber o valor do id ?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'mestre fyoda'

Você perguntou

Como a minha trigger vai saber o valor do id ?
Dentro de seu trigger existem dois ALIAS chamados NEW e OLD que podem ser utilizados a qualquer momento.

O alias OLD deve ser utilizado para referenciar os valores antigos, isto é, valores que existem na tabela antes da modificação ou exclusão da(s) linha(s) desejada(s).

O alias NEW deve ser utilizado para referenciar os valores que substituirão os valores antigos em determinados atributos da tabela.

Usando seu exemplo,

DELETE FROM `bans` WHERE `account` = OLD.`id`;

O OLD aqui está usando o valor existente em `accounts`.`id` antes que a linha em `accounts` seja excluida.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...