2011-11-12 5 views
1

J'ai une table:Trigger pour ajouter automatiquement un enregistrement à une autre table

Articles

itemID int autoincrement 
itemName text 

itemAvailability

itemID  integer REFERENCES Items (itemID) 
availability integer DEFAULT 0 

je besoin d'un déclencheur à faire:

Quand l'utilisateur ajoutera un enregistrement dans la table Items, le déclencheur doit ajouter automatiquement un enregistrement dans la table itemAvailability.

itemAvailability.itemID = Items.itemID

Au moment où je suis venu à ce point et coincé: bien

CREATE TRIGGER updateItemsAvailabilityTbl AFTER INSERT ON items 
BEGIN 
INSERT INTO itemAvailability (itemID) 
VALUES (items.itemID) 
END 

, il ne fonctionne pas pour moi. aidez s'il vous plaît.

Répondre

1

Votre instruction CREATE TRIGGER comporte deux erreurs. 1. Comme il est écrit dans les documentation

actions de déclenchement peuvent accéder à des éléments de la ligne étant inséré, supprimé ou mis à jour en utilisant les références du formulaire « NEW.column-name » et « OLD.column nom ", où nom-colonne est le nom d'une colonne de la table à laquelle le déclencheur est associé. références Ancien et du Nouveau ne peuvent être utilisés dans les déclencheurs des événements pour qu'ils sont pertinents, comme suit:

insérer des références NOUVELLES sont valables

NOUVELLE MISE À JOUR et références ANCIENS sont valables

Supprimer ANCIENS sont valides

Vous devriez donc écrire new.itemID au lieu de items.itemID. 2. L'instruction INSERT INTO doit être terminée par un point-virgule. Essayez ceci:

CREATE TRIGGER updateItemsAvailabilityTbl AFTER INSERT ON items 
BEGIN 
INSERT INTO itemAvailability (itemID) 
VALUES (new.itemID); 
END 
+0

Merci beaucoup. Ça marche – NCFUSN

Questions connexes