Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Insert into condizionale

88 views
Skip to first unread message

Carmelo

unread,
Aug 21, 2013, 10:37:34 AM8/21/13
to
Ho una tabella "Config" con due campi
Key Testo (chiave primaria)
Valore Testo

Dovrei fare una INSERT INTO solo se il testo della key non esiste
qualcosa del genere:
Insert into config (Key, Valore) Value ("Pippo", "Topolino")
Where Key = "Pippo" not exist.

Ho letto in rete alcuni esempi con Not exist e subquery ma non funzionano.

Se ᅵ possibile quale sintassi usare?

Carmelo

Marco Pizzamiglio

unread,
Aug 21, 2013, 11:05:38 AM8/21/13
to
Carmelo ha scritto:

> Ho una tabella "Config" con due campi
> Key Testo (chiave primaria)
> Valore Testo
> Dovrei fare una INSERT INTO solo se il testo della key non esiste
> qualcosa del genere:
> Insert into config (Key, Valore) Value ("Pippo", "Topolino")
> Where Key = "Pippo" not exist.
> Ho letto in rete alcuni esempi con Not exist e subquery ma non funzionano.
> Se � possibile quale sintassi usare?
> Carmelo

Puoi eseguire la query senza criteri, togliendo del tutto il Where. Se Key

la chiave primaria della tabella i record gi� esistenti verranno
automaticamente scartati, previa comparsa di un avviso.
Altrimenti prova cos�, che � pi� professionale:
WHERE NOT EXISTS (SELECT Key from Config WHERE Key="Pippo")
Ciao.
-Marco-


--

questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it


Karl Donaubauer

unread,
Aug 21, 2013, 1:09:44 PM8/21/13
to
Marco Pizzamiglio wrote:
> Carmelo ha scritto:
>
>> Ho una tabella "Config" con due campi
>> Key Testo (chiave primaria)
>> Valore Testo
>> Dovrei fare una INSERT INTO solo se il testo della key non esiste
>> qualcosa del genere:
>> Insert into config (Key, Valore) Value ("Pippo", "Topolino")
>> Where Key = "Pippo" not exist.
> ...
> Puoi eseguire la query senza criteri, togliendo del tutto il Where.
> Se Key �
> la chiave primaria della tabella i record gi� esistenti verranno
> automaticamente scartati, previa comparsa di un avviso.
> Altrimenti prova cos�, che � pi� professionale:
> WHERE NOT EXISTS (SELECT Key from Config WHERE Key="Pippo")

Ciao Marco,

come stringa sembra molto pi� professionale ;-) ma come comando
non puo funzionare. SQL dopo la clausola VALUES non consente niente.
Quindi un WHERE dopo VALUES deve dare un errore di sintassi.

Se assolutamente � necessario di fare il controllo nell'enunciato SQL
(invece del PK o un If in codice) puo usare SELECT invece di VALUES
e giochetti come:

INSERT INTO config (Key, Valore)
SELECT "Pippo", "Topolino" FROM config
WHERE 0 = (SELECT Count(*) FROM config WHERE Key="Pippo")
GROUP BY "Pippo"

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it


0 new messages