Как вставить данные в несколько таблиц в одном запросе — Mysql

У меня есть 8 запросов для вставки в 8 таблиц. Я пытался с этим, но бесполезно

$mysql_db_hostname = "localhost";
$mysql_db_user = "root";
$mysql_db_password = "";
$mysql_db_database = "emp";

$con = mysqli_connect($mysql_db_hostname, $mysql_db_user, $mysql_db_password) or die("Could not connect database");
mysqli_select_db($con, $mysql_db_database) or die("<div class='loginmsg'>Could not select database</div>");

if(mysqli_multi_query($con,"INSERT INTO t_emp (`e_id`,``,``) VALUES ('','',''); INSERT INTO t_emp_add (`e_id`,``,``) VALUES ('','',''); INSERT INTO t_emp_att (`e_id`,``,``) VALUES ('','',''); INSERT INTO t_emp_dep (`e_id`,``,``) VALUES ('','','');.....(etc);"))
{
echo "Inserted";
}
else{
echo "Not Inserted";
}

Есть ли способ хранить в нескольких таблицах?

3

Решение

использование transactions

BEGIN;
INSERT INTO tab1 (col1, col2)
VALUES('1', '2');
INSERT INTO tab2 (col1, col2,col3)
VALUES(1,2,3);
COMMIT;

MySQL не поддерживает вставку нескольких таблиц в одном INSERT
заявление.

1

Другие решения

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

delimiter $$
CREATE PROCEDURE `spInsertTemp`( IN `p_emp_no` INT, IN `p_e_id` INT, IN `p_att_s_no` INT, IN `p_dep_s_no` INT )
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
begin
insert into `t_emp` (`emp_s_no`,`e_id` ) values ( p_emp_no, p_e_id );
insert into `t_emp_add` ( `e_id` ) values ( p_e_id );
insert into `t_emp_att` (`att_s_no`,`e_id` ) values ( p_att_s_no, p_e_id );
insert into `t_emp_dep` ( `dep_s_no`, `e_id`) values ( p_dep_s_no, p_e_id );
end $$;
delimiter ;

Запустите это в своем графическом интерфейсе, используйте как: —

$sql='call `spInsertTemp`(1,2,4,5);';
1

Нет, в MySQL нет выражения для вставки одним запросом в несколько таблиц.

Если вы хотите, вы можете использовать MySQL хранимые процедуры или функции и / или использовать операции для этого.

0

Ты можешь использовать After Insert Trigger вставить запись в несколько таблиц. Он автоматически сработает, когда в этой базе данных будет выполнен оператор вставки.

0
По вопросам рекламы [email protected]