Insert mit subselect

Insert mit subselect

am 17.10.2007 13:16:41 von Jens Puruckherr

Hallo,

in einem via XSLT generierten Batchfile gibt es sehr viele Queries in
der Art:

....
insert into a (alid,artikelid) values (
'17011160', (select artikelid from b where artikel="3501-508"));
....

Wenn der subselect keine Eintrag findet, schlägt das Insert fehl, da
artikelid nicht NULL sein darf.
Das ist kein Problem und auch richtig, aber das ganze Batchfile hält
dadurch an. In diesem Fall soll es aber weiterlaufen, da hier
Verknüpfungen zwischen Tabellen erstellt werden. Die weiteren Einträge
sollen durchaus geschrieben werden.

Wie kann ich den Fehler abfangen?
Ich habe mir IF() angeschaut, aber das scheint nicht das Mittel der Wahl
zu sein.


Jens

Re: Insert mit subselect

am 17.10.2007 13:20:50 von Thomas Rachel

Jens Puruckherr schrieb:

> Wenn der subselect keine Eintrag findet, schlägt das Insert fehl, da
> artikelid nicht NULL sein darf.
> Das ist kein Problem und auch richtig, aber das ganze Batchfile hält
> dadurch an. In diesem Fall soll es aber weiterlaufen, da hier
> Verknüpfungen zwischen Tabellen erstellt werden. Die weiteren Einträge
> sollen durchaus geschrieben werden.
>
> Wie kann ich den Fehler abfangen?

INSERT IGNORE vielleicht?


Thomas

Re: Insert mit subselect

am 17.10.2007 13:22:52 von Claus Reibenstein

Jens Puruckherr schrieb:

> in einem via XSLT generierten Batchfile gibt es sehr viele Queries in
> der Art:
>
> ....
> insert into a (alid,artikelid) values (
> '17011160', (select artikelid from b where artikel="3501-508"));
> ....
>
> Wenn der subselect keine Eintrag findet, schlägt das Insert fehl, da
> artikelid nicht NULL sein darf.

Versuch's mal damit:

insert into a (alid,artikelid)
select '17011160', artikelid from b where artikel="3501-508";

Gruß. Claus

Re: Insert mit subselect

am 17.10.2007 15:54:03 von Jens Puruckherr

Claus Reibenstein schrieb:

> Versuch's mal damit:
>
> insert into a (alid,artikelid)
> select '17011160', artikelid from b where artikel="3501-508";
>

Danke, so tuts.


Jens