Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 24

Я только начал разбираться с sql и надеюсь вы мне поможете

06.01.2020, 17:20. Показов 795. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
имеется 3 таблицы (по идее только 3 понадобятся). В таблице arguments нужно создать такой триггер который будет проверять данных на повторение и если они уже существуют, то нам нужно записать данные из solution и answer в файл, если не существует, то нужно просо добавить в таблицу их. (или может проще использовать другой sql)
Миниатюры
Я только начал разбираться с sql и надеюсь вы мне поможете  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.01.2020, 17:20
Ответы с готовыми решениями:

Ошибка в коде надеюсь поможете
Пожалуйста помогите найти ошибку : Ошибка синтаксическая ошибка: * // c++.cpp: определяет точку входа для консольного...

начал разбираться в пошаговой отладке. и ?
Вообщем после пятого шага вылетает на это окно дальше если продолжаю жать f11 меняется только название системых файлов которые он (VC 2010)...

Только начал изучать C++, подскажите пожалуйста, как мне перевести код с Паскаль
var D:array of integer; dist:array of int64; flag:array of boolean; i,j,k,n,s,f,min:longint; begin readln(n,s,f); for i:=1 to n...

13
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
06.01.2020, 17:47
Цитата Сообщение от danilov032 Посмотреть сообщение
нужно записать данные из solution и answer в файл
меня терзают смутные сомнения
Цитата Сообщение от danilov032 Посмотреть сообщение
может проще использовать другой sql
хорошая идея
1
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 24
06.01.2020, 20:53  [ТС]
Я с радостью, но как тогда его в MySQL Workbench использовать?
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
06.01.2020, 21:05
danilov032, для чего вам это надо? вы выбрали не верный путь решения проблемы
0
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 24
06.01.2020, 21:11  [ТС]
mac1eod, мне нужно сделать проверку на повторение данных при записи в таблицу arguments чтобы в ней не было одинаковых строк. Но также я должен получить id если уже эта строка имеется в таблице и только потом если такие данные есть я должен записать solution и answer с тем же id в файл txt. А какой вы предлагаете вариант? Я понял что есть различные sql, но MySQL Workbench поддерживает MySQL и поэтому я в замешательстве.
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
06.01.2020, 21:16
danilov032, откажитесь от идеи записывать данные в файл. Записывайте в какую нибудь другую таблицу.
1
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 24
06.01.2020, 21:34  [ТС]
А как мне тогда сделать все эти проверки? Я просто делаю запрос и он работает, но только переношу этот запрос в триггер и все перестает работать.

Добавлено через 14 минут
mac1eod, вот код процедуры которую вызывает триггер и в строке SET res... происходит что то странное и присваивается не то значение, которое должно присвоиться. А в MySQL Workbench можно писать только на MySQL?
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
СREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`(IN Arg1 INT,IN Arg2 INT,IN Arg3 INT,IN Arg4 INT,OUT res INT)
BEGIN
IF(Arg2 IS NULL) THEN
    BEGIN
        SET res = (SELECT MIN(id_arguments) FROM arguments WHERE arg1 = Arg1 AND arg2 IS NULL);
    END;
ELSEIF(Arg3 IS NULL) THEN
    BEGIN
        SET res = (SELECT MIN(id_arguments) FROM arguments WHERE arg1 = Arg1 AND arg2 = Arg2 AND arg3 IS NULL);
    END;
ELSEIF(Arg4 IS NULL) THEN
    BEGIN
        SET res = (SELECT MIN(id_arguments) FROM arguments WHERE arg1 = Arg1 AND arg2 = Arg2 AND arg3 = Arg3 AND arg4 IS NULL);
    END;    
END IF;
IF(res IS NULL) THEN
    SET res = 0;
END IF;
END
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
06.01.2020, 21:38
danilov032, обязательно триггер? Триггеры привязаны к событиям изменения данных в таблицах. То есть вы выполняете insert в таблицу, в этот момент срабатывает триггер BeforeInsert затем, когда данные записаны в таблицу, AfterInsert. И единственный способ прервать запись в таблицу используя триггер, это в BeforeInsert генерировать исключение. Использовать исключения для контроля вводимых данных - по воробьям из пушки.
Правильнее это сделать хранимой процедурой.

Добавлено через 46 секунд
Цитата Сообщение от danilov032 Посмотреть сообщение
А в MySQL Workbench можно писать только на MySQL?
только MySQL. Поэтому он так и называется.

Добавлено через 1 минуту
Цитата Сообщение от danilov032 Посмотреть сообщение
SET res =
в этом случае необходимо использование оператора присваивания :=, а вы используете равно =
1
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 24
06.01.2020, 21:58  [ТС]
mac1eod, я поменял процедуру. Вот триггер ниже. После замены = на := ничего не поменялось(
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE DEFINER=`root`@`localhost` TRIGGER `arguments_BEFORE_INSERT` BEFORE INSERT ON `arguments` FOR EACH ROW BEGIN
 
DECLARE i INT;
 
    CALL new_procedure(NEW.`arg1`,NEW.`arg2`,NEW.`arg3`,NEW.`arg4`,@i);
IF(@i = 0) THEN
    BEGIN
        UPDATE tmp SET col = 1111 WHERE id = 1;
    END;
    ELSE
    BEGIN
        UPDATE tmp SET col = @i WHERE id = 1;
    END;
    END IF;
 
END
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
06.01.2020, 22:13
danilov032,
Цитата Сообщение от danilov032 Посмотреть сообщение
arg1 = Arg1
вы уверены что MySQL верно интерпретирует ваш код? он не делает разницы между верхним и нижним регистром.

Добавлено через 1 минуту
для чего вообще такая сложная проверка с elseif?
1
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 24
06.01.2020, 22:20  [ТС]
mac1eod, количество аргументов может быть как 1 так и 15 поэтому я должен для каждой составить свой запрос. Так как я плохо понимаю MySQl, то я бы делал так.

Добавлено через 4 минуты
mac1eod, я сдвинулся и часть кода заработала. Огромное спасибо. Но может быть есть идеи как записать это в файл? Что то типо этого в файле должно получиться
Solution
Step1: blabla
Step2: blabla
Answer
blabla
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
06.01.2020, 22:24
danilov032, ок, уговорили
как то так
MySQL
1
SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.txt'
1
0 / 0 / 0
Регистрация: 07.12.2017
Сообщений: 24
06.01.2020, 22:29  [ТС]
mac1eod, а в триггере можно отменить вставку? Ну то есть если есть такие данные, то вставку не делаем, а только находим id уже имеющихся. Я знаю что так можно сделать, но не на MySQl.

Добавлено через 1 минуту
Цитата Сообщение от mac1eod Посмотреть сообщение
SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.txt'
Я пробовал, но если файл с таким именем уже есть то программа ломается(
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
06.01.2020, 22:53
danilov032, что вам мешает делать динамическое имя файла? к примеру, название файла - текущая дата и время? двоеточие только уберите из названия
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2020, 22:53
Помогаю со студенческими работами здесь

Только начал проходить sql в инсте, не пойму задание
Здравствуйте, подскажите в каком направлении шевелиться. Есть задание где необходимо с помощью 2х изменений в каждой из 2х таблиц (которые...

Кто может помогать мне разбираться с 3G/4G модемом
Здравствуйте Уважаемы программисты! Я хочу создать программу для работы с СМС на 3G/4G модемом. Программа так выглядит: 1. Входящие...

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

Сокеты, сложный вопрос, надеюсь только для меня
Всем привет. Подскажите пожалуйста. Есть ServerSocket. Можно ли чтобы всё что в него приходит отсылать в Socket, который используется...

Критичное восприятие, которого мне не хватало (да и не только мне)
Недавно я понял, чего мне так сильно не хватало большую часть жизни - достаточной осознанности своих действий. Не просто в плане выполнения...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru