Je commence à apprendre le SQL et j'ai créé une base de données de Maisons où j'ai une table pour Maisons, Chambres, Couloirs, etc. J'ai une colonne dans les Maisons appelée NumberOfRooms, et une colonne dans les Chambres appelé HouseName.SQL - Erreur de mise à jour du déclencheur
J'essaye de faire un déclencheur de sorte que quand une pièce est ajoutée à une maison, l'attribut House "NumberOfRooms" est incrémenté.
C'est la requête que je suis en train:
CREATE TRIGGER UpdateNoRooms AFTER INSERT AS
UPDATE Houses SET Houses.NumberOfRooms = SELECT COUNT(Room)
FROM Rooms
WHERE Rooms.HouseName = Houses.Name;
, mais il ne fonctionne pas.
Tel est le message d'erreur que je reçois:
erreur 1064 (42000): Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près «
AS UPDATE Houses SET Houses.NumberOfRooms = SELECT COUNT(Room) FROM Rooms WHERE
» à la ligne 1
Toutes les idées sur comment je peux résoudre ce problème? Merci d'avance
Vous ne devriez pas avoir ':' 'avant new.HouseName' – Barmar
J'ai une question, où est-ce que le "nouveau" vient? Est-ce un terme SQL? – Yash
En fait, il y a beaucoup de fois où c'est la bonne chose à faire parce que faire cela au moment de la requête peut prendre trop de temps pour rapporter des requêtes sur des millions de lignes. En le faisant dans un déclencheur vous maintenez le nombre parfaitement. Cependant, si des enregistrements peuvent être supprimés, vous pouvez également avoir besoin d'un déclencheur après suppression. – HLGEM