2010-12-09 8 views
0

Je veux fairemise à jour de SQL et insérez

UPDATE CATALOGUE 
SET CATALOGUE.NUMBERINSTOCK=NUMBERINSTOCK-1 
WHERE CATALOGUE.ITEMID =(SELECT ALBUM.ALBUM_ID 
         FROM ALBUM 
         WHERE ALBUM.TITLE = '20 People in a Field' 
           AND IS_DISTRIBUTED_AS ='c') 

et ce

INSERT INTO ORDERELEMENT VALUES (1,10,12,17) 

si cela est vrai

(SELECT NUMBERINSTOCK 
FROM CATALOGUE 
WHERE CATALOGUE.ITEMID =(SELECT ALBUM.ALBUM_ID 
          FROM ALBUM 
          WHERE ALBUM.TITLE = '20 People in a Field' 
            AND IS_DISTRIBUTED_AS ='c')) > 0 

Le problème que j'ai est de trouver comment faire une condition déclaration dans une requête SQL, et aussi comment faire une mise à jour et insérer dans le cadre d'une requête.

Je dois faire toutes ces choses en une seule requête.

+0

Pourquoi dans une seule requête? –

+0

je fais un cours de bases de données et cela fait partie de l'une des questions que j'ai trouvé le reste ok mais chaque façon j'essaie ce problème j'obtiens des erreurs :( – hactf

+0

Quelle version de SQL? – cjk

Répondre

0

Vous ne pouvez pas mettre à jour une table et l'insérer dans une autre table dans une instruction. Il est possible d'effectuer une mise à jour sous condition si vous spécifiez une clause WHERE. Vous pouvez faire la même chose avec insert (les détails dépendent de dbms).

Vous pouvez cependant créer une procédure stockée contenant votre logique conditionnelle. L'invocation de cette procédure pourrait être considérée comme "une" déclaration?

+0

Dans PostgreSQL vous * peut * mettre à jour une table et l'insérer dans une autre en une seule instruction, appelée "CTE inscriptible" et je pense que SQL Server le supporte également. –