Je souhaite insérer une ligne dans la table A, mais uniquement si une autre ligne de la table B existe. Par exemple quelque chose comme ça ...Insérer conditionnellement une ligne
IF EXISTS (SELECT * FROM B WHERE id=1)
INSERT INTO A
(id, value1, value2)
VALUES (1, 'foo', 'bar')
Cependant, cela ne fonctionne pas. Ce qui sera?
Awww. N'est-ce pas (en vérifiant les conditions avant d'insérer une ligne) qu'un travail est réellement nécessaire pour la couche applicative? Comment réagiriez-vous si la rangée n'existait pas? –
Si la ligne n'existe pas, rien ne doit arriver. Dans ce cas, ne faire qu'une seule requête comme celle-ci sera plus efficace. Pour répondre à votre autre question, je ne pense pas que placer la vérification dans la couche d'application serait mieux dans le style, car elle serait juste à côté de la requête de toute façon. – Cam
Je pense que le point de Pekka est que l'application n'est pas consciente de l'état de la requête. Si la condition est fausse, la requête réussit. Généralement, vous souhaitez que votre application * sache * si les données ont été enregistrées ou non. Sinon, vous ne devriez pas le stocker en premier lieu. – cbednarski