Надеюсь, я все правильно понял: вы хотите обновить таблицу courselist
одновременно с вставкой записи в таблицу registerlist
?Это можно сделать с помощью триггеров (https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html, ЕСЛИ обе базы данных работают на одном и том же сервере SQL) и / или блокировок таблиц (https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html):
Без триггера
- Таблица блокировок
courselist
- Вставить запись в
registerlist
- Таблица обновлений
courselist
- Таблица разблокировок
courselist
С триггером Вам нужен триггер, который блокирует таблицу courselist
перед записью в таблицу registerlist
, и триггер, который обновляет courselist
и снимает блокировку после записи в registerlist
. В этом случае вы просто вставляете запись в registerlist
из своего PHP-кода, и триггеры на сервере SQL выполняют блокировку таблицы и courselist
обновление.
В любом случае вы не можете писать в обе таблицы одновременно, для этого нет оператора SQL, но с помощью блокировок вы можете смоделировать такое поведение.
При определении целевой таблицы SQLоператор, вы можете добавить имя базы данных таблиц, например databaseName.tableName
, если соединение используетt базы данных по умолчанию.
Но айнбер из комментариев абсолютно прав - вы должны отойти от mysql_*
как можно скорее!
Редактировать : этот пример SQL должен показать, какблокировка таблицы работает (всю информацию об этом можно найти в документации MySQL по ссылке выше):
LOCK TABLES courselist WRITE;
INSERT INTO registerlist …;
UPDATE courselist …;
UNLOCK TABLES;
Вам понадобится блокировка WRITE
, так как вы собираетесь писать вТаблица.Другие операторы чтения, записи или блокировки из других сеансов блокируются до тех пор, пока вы не снимите блокировку.
Блокировка READ
предотвратит изменение таблицы любым сеансом.Попытки записи (и блокировки записи) блокируются до тех пор, пока вы не снимите блокировку и не будут сняты все другие блокировки READ
из других сеансов.