Jump to content


Photo

Erro Com Sintaxe Mysql


  • Faça o login para participar
2 replies to this topic

#1 tesla

tesla

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 02/08/2009, 20:15

Pessoal to usando o mysql 6.0.4 e tenho a seguinte sintaxe:
DELIMITER $$ CREATE TRIGGER `ondelete_accounts`
BEFORE DELETE
ON `accounts`
FOR EACH ROW
BEGIN
	DELETE FROM `bans` WHERE `type` NOT IN (1,2) AND `value` = OLD.`id`;
END; 
$$

DELIMITER $$ CREATE TRIGGER `oncreate_guilds` AFTER INSERT ON `guilds`
FOR EACH ROW
BEGIN
	INSERT INTO `guild_ranks` (`name`, `level`, `guild_id`) VALUES ('Leader', 3, NEW.`id`);
	INSERT INTO `guild_ranks` (`name`, `level`, `guild_id`) VALUES ('Vice-Leader', 2, NEW.`id`);
	INSERT INTO `guild_ranks` (`name`, `level`, `guild_id`) VALUES ('Member', 1, NEW.`id`);
END;
$$

DELIMITER $$ CREATE TRIGGER `ondelete_guilds` BEFORE DELETE ON `guilds`
FOR EACH ROW
BEGIN
	UPDATE `players` SET `guildnick` = '', `rank_id` = 0 WHERE `rank_id` IN (SELECT `id` FROM `guild_ranks` WHERE `guild_id` = OLD.`id`);
END;
$$

DELIMITER $$ CREATE TRIGGER `oncreate_players `AFTER INSERT ON `players`
FOR EACH ROW
BEGIN
	INSERT INTO `player_skills` (`player_id`, `skillid`, `value`) VALUES (NEW.`id`, 0, 10);
	INSERT INTO `player_skills` (`player_id`, `skillid`, `value`) VALUES (NEW.`id`, 1, 10);
	INSERT INTO `player_skills` (`player_id`, `skillid`, `value`) VALUES (NEW.`id`, 2, 10);
	INSERT INTO `player_skills` (`player_id`, `skillid`, `value`) VALUES (NEW.`id`, 3, 10);
	INSERT INTO `player_skills` (`player_id`, `skillid`, `value`) VALUES (NEW.`id`, 4, 10);
	INSERT INTO `player_skills` (`player_id`, `skillid`, `value`) VALUES (NEW.`id`, 5, 10);
	INSERT INTO `player_skills` (`player_id`, `skillid`, `value`) VALUES (NEW.`id`, 6, 10);
END;
$$

DELIMITER $$ CREATE TRIGGER `ondelete_players` BEFORE DELETE ON `players`
FOR EACH ROW
BEGIN
	DELETE FROM `bans` WHERE `type` = 2 AND `value` = OLD.`id`;
	UPDATE `houses` SET `owner` = 0 WHERE `owner` = OLD.`id`;
END;
$$

Quando vou executa-la sempre recebo este erro:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE TRIGGER `ondelete_accounts`
BEFORE DELETE
ON `accounts`
F' at line 1


Como resolvo isso?

Obrigado.

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 02/08/2009, 20:44

Deixei a parte do DELIMITER em uma linha separada.

Exemplo:
[codebox]
mysql> DELIMITER $$
mysql> CREATE TRIGGER `ondelete_accounts`
-> BEFORE DELETE
-> ON `accounts`
-> FOR EACH ROW
-> BEGIN
-> DELETE FROM `bans` WHERE `type` NOT IN (1,2) AND `value` = OLD.`id`;
-> END;
-> $$
[/codebox]
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 tesla

tesla

    Turista

  • Usuários
  • 47 posts
  • Sexo:Não informado

Posted 02/08/2009, 21:10

opa deu certo




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq