Как автоматически вставлять данные в таблицу MySQL, когда данные вставляются в другую таблицу? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть сценарий викторины с тремя таблицами: «вопросы», «параметры» и «связи».

Имя таблицы: вопросы

Question_ID    Question
10             Sample Question 10
11             Sample Question 11

В в таблице «вопросы» Question_ID установлен как первичный ключ.

Имя таблицы: соединения

Connection_ID   Quiz_ID   Question_ID   Question_Order
1               1         10            27
2               1         11            28

В таблице «соединений» Connection_ID установлен как первичный key и Quiz ID всегда равны 1.

Теперь я хочу, чтобы при вставке данных в таблицу «вопросы» соответствующие данные автоматически вставлялись в таблицу «соединения». После добавления еще двух строк данных в «вопросы» (Qn ID: 12, 13) таблица «соединений» должна выглядеть следующим образом:

Connection_ID   Quiz_ID     Question_ID     Question_Order
1               1           10              27
2               1           11              28
3               1           12              29
4               1           13              30

Как лучше всего этого добиться?

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Как я сказал о триггере AFTER INSERT

основная проблема заключается в том, что все добавлено в тест с идентификатором 1, я думаю, у вас это тоже есть в таблице вопросов

 DROP TRIGGER IF EXISTS newquestions;
 DELIMITER $$ 
 CREATE TRIGGER newquestions
AFTER INSERT
DETERMINUISTC
ON questions FOR EACH ROW
BEGIN
    SELECT MAX(Connection_ID),MAX(Question_Order) INTO @connect,@questionorder FROM connections WHERE Quiz_ID = 1;
    INSERT INTO connections VALUES(@connect + 1,1,NEW.Question_ID,@questionorder + 1) ;
END;
DELIMITER ;
0 голосов
/ 08 мая 2020

Для этого вы можете использовать MYSQL триггеры. И вы должны установить идентификатор викторины и порядок вопросов, которым необходимо управлять в зависимости от ваших потребностей.

В настоящее время вы можете установить Connection_ID и Question_Order AUTO_INCREMENT. Затем установите триггер ниже. DELIMITER $$

CREATE TRIGGER after_questions_insert
AFTER INSERT
ON questions FOR EACH ROW
BEGIN
    IF NEW.id IS NOT NULL THEN
        INSERT INTO connections(Quiz_ID, Question_ID)
        VALUES(1,NEW.id);
    END IF;
END$$

DELIMITER ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...