Ich habe den Code von @Shadow geändert. Sie müssen auch den Schemanamen einschließen. und setzen Sie es auch in backquotes, um Leerzeichen in den Feldnamen zu vermeiden.
...
DECLARE s_sql VARCHAR(1000); --length should depend ON how many fields you have
SELECT
CONCAT(
'insert into tablename ('
,GROUP_CONCAT(CONCAT('`',COLUMN_NAME,'`'))
,') values ('
,GROUP_CONCAT(CONCAT('`OLD`.`',COLUMN_NAME,'`')),
')'
)
INTO s_sql
FROM information_schema.columns
WHERE
TABLE_NAME='your_table'
AND
TABLE_SCHEMA='your_schema'
GROUP BY TABLE_NAME;
prepare stmt from s_sql;
execute stmt;
deallocate prepare stmt;
...
Probe
MariaDB [your_schema]> SELECT
-> CONCAT(
-> 'insert into tablename ('
-> ,GROUP_CONCAT(CONCAT('`',COLUMN_NAME,'`'))
-> ,') values ('
-> ,GROUP_CONCAT(CONCAT('`OLD`.`',COLUMN_NAME,'`')),
-> ')'
-> )
-> INTO @s_sql
-> FROM information_schema.columns
-> WHERE
-> TABLE_NAME='your_table'
-> AND
-> TABLE_SCHEMA='your_schema'
-> GROUP BY TABLE_NAME;
Query OK, 1 row affected (0.00 sec)
MariaDB [your_schema]> select @s_sql;
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| @s_sql |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| insert into tablename (`sr_no`,`scholar_no`,`paid_amount`,`due_amount`,`fee_date`,`section_id_fk`) values (`OLD`.`sr_no`,`OLD`.`scholar_no`,`OLD`.`paid_amount`,`OLD`.`due_amount`,`OLD`.`fee_date`,`OLD`.`section_id_fk`) |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [your_schema]>
Warum möchten Sie das tun? Erklären Sie sie einfach, sonst erhalten Sie alle Arten oder Fehler mit nicht übereinstimmenden Daten. –
Soweit ich weiß, können Sie eine Einfügung in eine andere Datenbank nicht auslösen, ohne sie in der CREATE-Anweisung zu verbinden. Im folgenden Link wird beschrieben, wie Datenbanken auf verschiedenen Servern verbunden werden. Es kann auch für einen einzelnen Server funktionieren: http://stackoverflow.com/questions/26503342/how-to-create-trigger-to-insert-data-to-a-database-on-another-server – Otterbein
Rich Benner cuz Ich muss 800 + Trigger machen, ich kann sie nicht 1 zu 1 machen –