безумие
верно, особенно если про биллинг внутри счетов компании. запрос упал и пизда, бабло спимали но не прибавили :-))
Форум → Программирование → PHP для идиотов → Всегда задавался этим вопросом, Myisam или innodb
Страницы: ← Предыдущая страница →
1 августа 2011 г. 17:09, спустя 2 минуты 33 секунды
безумие
1 августа 2011 г. 21:54, спустя 4 часа 44 минуты 49 секунд
2 августа 2011 г. 5:49, спустя 7 часов 55 минут 40 секунд
2 августа 2011 г. 14:45, спустя 8 часов 55 минут 24 секунды
, кстати странно но в документации я про них ничего не наяшел
дык че стригеррами, у меня они нивкакую не встают
3 августа 2011 г. 5:16, спустя 14 часов 31 минуту 48 секунд
3 августа 2011 г. 8:29, спустя 3 часа 12 минут 20 секунд
3 августа 2011 г. 11:28, спустя 2 часа 59 минут 42 секунды
версия 5.1.54
блядь, а я то губу раскатал
DROP TRIGGER IF EXISTS `TRIGGER_TABLE2_AI`;
DROP TABLE IF EXISTS `table2`;
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`count` INTEGER UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY(`id`)
) ENGINE='InnoDB';
CREATE TABLE `table2` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`table1_id` INTEGER UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY(`id`)
) ENGINE='InnoDB';
ALTER TABLE `table2`
ADD CONSTRAINT `FK_TABLE2_TABLE1_ID`
FOREIGN KEY `FK_TABLE2_TABLE1_ID` (`table1_id`)
REFERENCES `table1`(`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;
# заменяем разделитель с ";" на "//"
DELIMITER //
# создаём триггер
CREATE TRIGGER `TRIGGER_TABLE2_AI` AFTER INSERT ON `table2`
FOR EACH ROW
BEGIN
UPDATE `table1` SET `count`=`count`+1 WHERE `id`=NEW.`table1_id` LIMIT 1;
# вот тут был косяк, так как MySQL думал, что раз ; получена значит
# конец выражения достигнут, а так как был BEGIN а END ещё не найден,
# возникает ошибка, но если использовать замену ; на // как сейчас,
# ; не будет воспринята как разделитель, и выражение будет считываться,
# пока не найдётся "//"
END //
# конец выражения, все ок, оно валидно с точки срения SQL, так как для BEGIN
# есть закрывающий END
# возвращаем разделитель ";", а то и дальше придётся везде вместо ; писать //
DELIMITER ;
4 августа 2011 г. 6:35, спустя 19 часов 6 минут 59 секунд
7 августа 2011 г. 19:03, спустя 3 дня 12 часов 27 минут
11 августа 2011 г. 2:24, спустя 3 дня 7 часов 20 минут
`last_theme` VARCHAR(100) NULL, – заголовок последней добавленной темы
`last_theme_date` DATETIME, – дата последней темы
`last_theme_uid`INT(11) UNSIGNED – id юзера кто добавил
`last_theme_username` VARCHAR(20) NULL, – имя юзера
`last_theme_id` INT(11) UNSIGNED – id последней темы
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!