作成したテーブルは次のとおりです。新しいテーブルに古いデータを挿入するためのトリガーを作成します。
USE my_guitar_shop;
DROP TABLE IF EXISTS Products_Audit;
CREATE TABLE Products_Audit (
audit_id INT PRIMARY KEY,
category_id INT REFERENCES categories(category_id),
product_code VARCHAR (10) NOT NULL UNIQUE ,
product_name VARCHAR (255) NOT NULL,
list_price INT NOT NULL,
discount_percent INT NOT NULL DEFAULT 0.00 ,
date_updated DATETIME NULL);
products_after_updateという名前のトリガーを作成します。このトリガーは、行が更新された後、製品に関する古いデータをProducts_Auditテーブルに挿入する必要があります。次に、このトリガーを適切なUPDATEステートメントでテストします。
作成したトリガーはここにありますが、データはProducts_Auditテーブルに表示されず、すべてのnullが表示されています。 INSERTと
USE my_guitar_shop;
DROP TRIGGER IF EXISTS products_after_update;
DELIMITER $$
CREATE TRIGGER products_after_update
BEFORE UPDATE ON products
FOR EACH ROW
BEGIN
INSERT INTO products_audit (audit_id, product_id, category_id, product_code,
product_name, list_price, discount_percent, date_updated)
SELECT audit_id, products.product_id, products.category_id, products.product_code,
products.product_name,products.list_price, products.discount_percent, date_updated
FROM products JOIN products_audit
ON products_audit.audit_id = (SELECT audit_id FROM inserted);
END $$
DELIMITER ;
EDIT
USE my_guitar_shop;
DROP TRIGGER IF EXISTS products_after_update;
DELIMITER $$
CREATE TRIGGER products_after_update
BEFORE UPDATE ON products
FOR EACH ROW
BEGIN
INSERT INTO products_audit (audit_id, product_id, category_id,product_code,
product_name, list_price, discount_percent, date_updated)
VALUES (OLD.audit_id, OLD.product_id, OLD.category_id, OLD.product_code,
OLD.product_name, OLD.list_price, OLD.discount_percent, OLD.date_updated)
DELIMITER ;
私は製品FROM products_audit文のON products_auditのJOINのために同じことをしますか?私があなたのインサートを追加したとき、私はこのエラーを取得します。トリガーを作成するproducts_after_update各行ごとに製品を更新する前にproducts_audit(audit_id、product_id、category_id、product_code、product_name、list_price、discount_percent、date_updated)VALUES(OLD.audit_id、OLD.product_id、 OLD.category_id、OLD.product_code、OLD.product_name、OLD.list_price、OLD.discount_percent、OLD.date_updated)商品からJOIN products_audit – Harvey
あなたはその点を理解できませんでした。選択部分はまったく必要ありません! – Shadow
SELECT部分を削除しましたが、最後にVALUESの括弧に構文エラーがあることを示しています。 – Harvey