从db表1中选择数据并将其插入到php中的另一个db表2中

Ash*_*ley 8 php mysql triggers bulkinsert sql-insert

我有两个不同的数据库,名称:

  1. dbtest:表1
  2. dbtest2:表2

我想从dbtest表1中选择所有数据和新条目到dbtest2表2.

我试过这个

$sqlfin = "INSERT INTO dbtest2.Table2 SELECT * FROM dbtest.Table1";
$resultfi = mysqli_query($db_conn, $sqlfin);
Run Code Online (Sandbox Code Playgroud)

但到目前为止没有运气.我怎样才能确保将新记录插入两个表中?任何帮助,将不胜感激?

AZi*_*key 6

让我们尝试这种格式

INSERT INTO `dbtest2`.`Table2` SELECT * FROM `dbtest`.`Table1`
Run Code Online (Sandbox Code Playgroud)

INSERT ... SELECT语句包含以下条件:

  • 指定IGNORE以忽略会导致重复键冲突的行.
  • AUTO_INCREMENT列照常工作.
  • 为了确保二进制日志可以用来重新创建原始表,MySQL不允许对INSERT并发插入... SELECT语句(见第8.11.3,"并发插入").
  • 为了避免模棱两可的列引用问题,当在SELECT和INSERT指代相同的表中,提供一种用于在SELECT部分​​所使用的每个表中的唯一的别名,和限定列名在该部分与适当的别名.

INSERT ... SELECT语法


创建触发器:用于添加新条目

CREATE TRIGGER copy_record BEFORE INSERT ON dbtest.Table1 
FOR EACH ROW 
BEGIN 
   INSERT INTO dbtest2.Table2 (first_name, last_name) VALUES (new.first_name, new.last_name); 
END
Run Code Online (Sandbox Code Playgroud)

trigger_event指示激活触发器的操作类型.允许使用这些trigger_event值:

INSERT: The trigger activates whenever a new row is inserted into the table; for example, through INSERT, LOAD DATA, and REPLACE
Run Code Online (Sandbox Code Playgroud)

声明.

UPDATE: The trigger activates whenever a row is modified; for example, through UPDATE statements.

DELETE: The trigger activates whenever a row is deleted from the table; for example, through DELETE and REPLACE statements. DROP TABLE
Run Code Online (Sandbox Code Playgroud)

表上的TRUNCATE TABLE语句不会激活此触发器,因为它们不使用DELETE.删除分区也不会激活DELETE触发器.

CREATE TRIGGER语法