[英]SQL TRIGGER: Insert deleted row into a table at once without listing every column as INSERT values
我有一個已經可以工作的代碼,但是我正在尋找一種寫一條sql語句的方法,當從另一張表中刪除了一行時,該語句可以插入到表中,而不必在插入語句下列出每一列作為值。 對於一個表有許多列的情況,它確實派上用場。 這是我當前的代碼,希望有人可以幫助我修改它。
CREATE TABLE `history_tblvendorpayment` LIKE `tblvendorpayment`;
ALTER TABLE `history_tblvendorpayment`
MODIFY COLUMN `id` INT UNSIGNED NOT NULL;
ALTER TABLE `history_tblvendorpayment` DROP PRIMARY KEY;
ALTER TABLE `history_tblvendorpayment`
ADD COLUMN `history_id` INT UNSIGNED NOT NULL;
ALTER TABLE `history_tblvendorpayment`
ADD CONSTRAINT PRIMARY KEY (`history_id`);
ALTER TABLE `history_tblvendorpayment`
MODIFY `history_id` INT UNSIGNED NOT NULL AUTO_INCREMENT;
DELIMITER $$
DROP TRIGGER `delete_tblvendorpayment`$$
CREATE TRIGGER `delete_tblvendorpayment` BEFORE DELETE on `tblvendorpayment`
FOR EACH ROW
BEGIN
INSERT INTO history_tblvendorpayment (id, created_by,
vendor_id, amount_payable,
amount_payed, description,
depositor_name, gl_code_credit,
gl_code_debit, txn_date,
pay_date, ref_id,
bank, currency,
date, md_approval,
status, sage_status,
memo_id)
VALUES (
OLD.id, OLD.created_by,
OLD.vendor_id, OLD.amount_payable,
OLD.amount_payed, OLD.description,
OLD.depositor_name, OLD.gl_code_credit,
OLD.gl_code_debit, OLD.txn_date,
OLD.pay_date, OLD.ref_id,
OLD.bank, OLD.currency,
OLD.date, OLD.md_approval,
OLD.status, OLD.sage_status,
OLD.memo_id
);END$$
DELIMITER ;
我希望這樣的事情:
DELIMITER $$
DROP TRIGGER `delete_tblvendorpayment`$$
CREATE TRIGGER `delete_tblvendorpayment` BEFORE DELETE on `tblvendorpayment`
FOR EACH ROW
BEGIN
INSERT INTO history_tblvendorpayment
SELECT * FROM OLD;
END$$
DELIMITER ;
如果要插入原始表中的所有列,則可以將觸發器簡化為:
CREATE TRIGGER `delete_tblvendorpayment` BEFORE DELETE on `tblvendorpayment`
FOR EACH ROW
BEGIN
INSERT INTO history_tblvendorpayment
SELECT *
FROM tblvendorpayment
WHERE id = OLD.id;
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.