SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#26 09.11.2018 13:44:44

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает триггер

вероятно DELIMITER  не сменили

Неактивен

 

#27 09.11.2018 13:50:49

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

да вы правы дело именно в этом, забыл сменить.

Неактивен

 

#28 09.11.2018 16:45:19

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

А можно автоматически заполнять колонки в таблице?

Допустим есть таблица:
create table book (
    id int not null primary key,
    name char(80),
    count int not nutll,
    price int not nutll,
   sum int not null,
);

Как то можно заполнить колонку sum автоматически? чтобы подставлялось что-то вроде      sum= count * price

пробовал с помощью триггера, ругается что нельзя изменять данные в той таблице из которой вызывается триггер.

Неактивен

 

#29 09.11.2018 16:51:23

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает триггер

триггер должен быть before
ещё есть генерируемые колонки

Неактивен

 

#30 09.11.2018 17:15:46

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

Спасибо по поводу генерируемых колонок интересно почитаю.

Но нашел еще один способ прямо в выборке    (
select count, price, (count*price) AS sum from book;

Неактивен

 

#31 09.11.2018 21:19:45

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

Как сделать сортировку по 2 столбцам?

id_book  |   name_shop   |   count
---------------------------------------
  111             Shop1              1
  111             Shop1              1
  333             Shop1              1
  444             Shop2              1


Сортировку по name_shop и id_book (чтобы можно было узнать информацию о том сколько книг продали в конкретно магазине)

count      name_shop
-------------------------
    2             Shop1
    1             Shop2

Неактивен

 

#32 09.11.2018 21:30:10

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает триггер

перечисляете поля через запятую
только сортировку или группировку?
имхо у вас группировка по одному полю и подсчет уникальных count(distinct )

Неактивен

 

#33 09.11.2018 21:33:30

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

Да Группировку это я не так написал извиняюсь. Чтобы в результате получился вывод как во второй таблице

Неактивен

 

#34 09.11.2018 21:39:32

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает триггер

select count(distinct id_book), name_shop ... group by name_shop

Неактивен

 

#35 09.11.2018 22:02:29

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

спасибо тебе все получилось!

Неактивен

 

#36 11.11.2018 14:27:51

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

Как сохранить базу данных?

Например я создал базу данных, в ней необходимые таблицы, затем их заполнил. И как мне теперь их сохранить чтобы на другом компьютере все это можно было восстановить?

Почитал что делают вот такой командой:
mysqldump -u USER -pPASSWORD DATABASE > dump.sql

я в консоли mysql ввожу   SELECT user();     в ответ получаю (root@localhost)
далее пароль который я ввожу при подключении к mysql  ( 123456 )
База данных у меня называется test;

В результате я пишу такую команду:
mysqldump -u root -p123456 test > dump.sql

Выдается ошибка что нарушен синтаксис. Что у меня не так?
https://cloud.mail.ru/public/7Rr9/eU9FFTaYY

Неактивен

 

#37 11.11.2018 18:21:02

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает триггер

Неактивен

 

#38 11.11.2018 21:25:23

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

Есть какой-нибудь способ отменить ввод данных если произошло определенное условие?

Допустим в наличии есть 3 экземпляра одной книги. 3 человека ее купили, а если 4 захочет купить тогда операция не пройдет.


Есть таблица книги:
create table book (
    id int not null primary key,
    coun_book int not null,          //количество книг
    name_book char(80)
);

покупатели
create table customer (
    id int not null,
    name_user char(20),
    id_books int
    foreign key(id_books) references book(id)
);
insert into book values(1, 3, 'Book1');

insert into customer values(1, 'Vasya' 1); - купили 1 книгу
insert into customer values(2, 'Petya' 1); - купили 2 книгу
insert into customer values(3, 'Dima' 1); - купили 3 книгу

insert into customer values(4, 'Roma' 1); - а вот это строка уже не должна сработать потому что уже все книги распроданы.

Можно ли это как-то реализовать?

Неактивен

 

#39 11.11.2018 21:34:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает триггер

при вставке в триггере проверять
https://sqlinfo.ru/forum/viewtopic.php?id=7650

Неактивен

 

#40 11.11.2018 22:26:57

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

create table book (
    id int not null primary key,
    count_book int not null,
    name_book char(80)
)engine=innodb;

create table customer (
    id int not null,
    name_user char(20),
    id_books int,
    foreign key(id_books) references book(id)
)engine=innodb;


DELIMITER $$
CREATE TRIGGER new_profile BEFORE INSERT ON customer
    for each row
    begin
    declare colvo int;
    select count_book from book where id = NEW.id_books INTO colvo;

    if(colvo < 4) THEN
      select * from xxx;
    end if;

END $$
DELIMITER ;

выдает ошибку:  Not allowed to return a result set from a trigger

нашел тему тут на форуме      https://sqlinfo.ru/forum/viewtopic.php?id=7096

вроде все пишу как там но не работает.

Неактивен

 

#41 11.11.2018 22:55:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает триггер

select * from xxx;
в триггере нельзя использовать select без into

Неактивен

 

#42 11.11.2018 23:11:18

Дмитрий22432
Участник
Зарегистрирован: 07.11.2018
Сообщений: 24

Re: Не работает триггер

Vasya спасибо тебе огромнейшее за твою помощь!!!

Если бы не ты я бы с этим разбирался еще очень и очень долго. Столько всяких нюансов которые совсем не очевидны.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson