Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
40 / 0 / 0
Регистрация: 21.09.2014
Сообщений: 55
1

Написание триггера

29.03.2015, 22:59. Показов 1036. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, создал БД - Автосервис. Сделаю скриншоты своих таблиц. На основе них, посмотрите пожалуйста на создание триггера, а то он у меня не выполняется. Не вижу, в чём может быть ошибка. Суть триггера: Сделать ограничение, чтобы мастер в автосервисе в день не мог принимать более 5 клиентов".

MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TRIGGER max_clients_count
    ON `avtobase`.`clients` AFTER INSERT
    AS BEGIN
        DECLARE @FIO varchar (50)
        DECLARE @date1 date
        DECLARE @master_id int
        SET @FIO = (SELECT FIO FROM inserted)
        SET @date1 = (SELECT Dates_clients FROM inserted)
        SET @master_id = (SELECT ID_mastera FROM inserted)
        IF (SELECT count(ID) FROM avtobase.clients WHERE FIO = @FIO AND Dates_clients = @date1 AND ID_mastera = @master_id) > 5
            BEGIN
                ROLLBACK TRAN
                PRINT 'NO!'
            END
    END
Миниатюры
Написание триггера   Написание триггера   Написание триггера  

Написание триггера  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2015, 22:59
Ответы с готовыми решениями:

Некорректная работа триггера
Здравствуйте, не могу понять в чем ошибка. Логика: если значение >=100, то показатель оптимален, в...

Редактирование событий из триггера
Есть таблица times с таким содержанием id____ time_____ time01 14:30:00 time02 19:20:00...

бд MySql Создание триггера
Привет всем! Помогите пожалуйста есть бд Библиотека которую я делал в DBForge(MySql) Нужно...

Работа триггера INSERT
Подскажите, плиз. Есть вот такая ситуация (приложение работает на ASP). Вставляются данные в...

11
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
29.03.2015, 23:54 2
я не уверен, но может вместо
SQL
1
ON `avtobase`.`clients` AFTER INSERT
надо было вставить
SQL
1
    ON `avtobase`.`clients` BEGIN INSERT
?
0
40 / 0 / 0
Регистрация: 21.09.2014
Сообщений: 55
30.03.2015, 08:15  [ТС] 3
Посмотри, какую ошибку выдаёт. Даже когда поменял.
Миниатюры
Написание триггера  
0
40 / 0 / 0
Регистрация: 21.09.2014
Сообщений: 55
30.03.2015, 08:16  [ТС] 4
Могу конечно показать, ночь сидел разбирался. Может нужно какие-нибудь запросы прописать в таблицах, чтобы заработал триггер, не пойму(
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
30.03.2015, 09:48 5
Для начала посмотреть доку и использовать правильный синтаксис, чтобы его создать.
1
9 / 9 / 3
Регистрация: 22.01.2012
Сообщений: 122
30.03.2015, 11:50 6
http://habrahabr.ru/post/121129/
1
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
30.03.2015, 15:52 7
может так?:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TRIGGER max_clients_count
    BEFORE INSERT ON `avtobase`.`clients`
    BEGIN
        DECLARE @FIO varchar (50)
        DECLARE @date1 date
        DECLARE @master_id int
        SET @FIO = (SELECT FIO FROM inserted)
        SET @date1 = (SELECT Dates_clients FROM inserted)
        SET @master_id = (SELECT ID_mastera FROM inserted)
        IF (SELECT count(ID) FROM avtobase.clients WHERE FIO = @FIO AND Dates_clients = @date1 AND ID_mastera = @master_id) > 5
            BEGIN
                ROLLBACK TRAN
                PRINT 'NO!'
            END
    END
0
40 / 0 / 0
Регистрация: 21.09.2014
Сообщений: 55
30.03.2015, 16:58  [ТС] 8
"Ошибка SQL (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 'Begin
DECLARE @FIO varchar (50)
DECLARE @date1 date
D' at line 3

Я вот что думаю, может HeidiSQL не может определить значение DECLARE @?
0
411 / 365 / 142
Регистрация: 09.04.2011
Сообщений: 1,051
30.03.2015, 18:11 9
Вместо того, чтобы гадать и писать кучу постов, можно посмотреть в документации правильный синтаксис (тем более что даже ссылку дали).
0
0 / 0 / 0
Регистрация: 12.02.2012
Сообщений: 45
28.01.2016, 13:36 10
А нет нигде русифицированной документации? А то видимо у меня не очень с английским, я запутался нафиг в синтаксисе ни один вариант написанный мною не прошёл компиляцию.
0
101 / 94 / 38
Регистрация: 30.09.2009
Сообщений: 442
28.01.2016, 13:47 11
может запутался в порядке объявления элементов?
какую ошибку выдает?
что бы найти документацию на русском, пиши вопрос гуглу на русском

Добавлено через 6 минут
Цитата Сообщение от White Tiger Посмотреть сообщение
А нет нигде русифицированной документации? А то видимо у меня не очень с английским, я запутался нафиг в синтаксисе ни один вариант написанный мною не прошёл компиляцию.
не обязательно отлично знать английский, что бы понять техническую документацию
http://www.mysql.ru/docs/mysql... te-trigger
на английском, но понятно,
а какими доками Вы пользуетесь?
0
0 / 0 / 0
Регистрация: 12.02.2012
Сообщений: 45
28.01.2016, 16:38 12
Я пользовался официалкой для HeidiSQL. Впрочем проблему я уже решил, не нравились разделители, пришлось на время их поменять и всё сработало.
Однако, всё равно спасибо что отозвались.
0
28.01.2016, 16:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2016, 16:38
Помогаю со студенческими работами здесь

Ошибка при создании триггера
не могу понять , что от меня хочет mysql. ввожу данный триггер: delimiter // create trigger...

Неправильный синтаксис создания триггера
Здравствуйте, скажите пожалуйста почему здесь неправильный синтаксис триггера: CREATE TRIGGER...

Ошибка при выполнении триггера
Передо мной такая задача: Cоздать триггер, который устанавливает в поле stud.telephone значение...

Ошибка при создании триггера
CREATE TRIGGER abc AFTER INSERT ON cur FOR EACH ROW ALTER TABLE `balance` ADD COLUMN `a` int(7)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru