SQL-Code:
DROP TABLE IF EXISTS foo;
CREATE TABLE foo (
id int(11) NOT NULL DEFAULT '0',
Wert1 varchar(10) DEFAULT NULL,
PRIMARY KEY (id)
);
INSERT INTO foo ( id, Wert1 ) VALUES( 1, 'test 1' );
INSERT INTO foo ( id, Wert1 ) VALUES( 2, 'test 2' );
INSERT INTO foo ( id, Wert1 ) VALUES( 3, 'test 3' );
INSERT INTO foo ( id, Wert1 ) VALUES( 4, 'test 4' );
SET @AWert1 = NULL;
UPDATE foo SET Wert1 = IFNULL( Wert1, @AWert1 ) WHERE id = 1;
UPDATE foo SET Wert1 = IFNULL( @AWert1, Wert1 ) WHERE id = 2;
SET @AWert1 = 'updated';
UPDATE foo SET Wert1 = IFNULL( Wert1, @AWert1 ) WHERE id = 3;
UPDATE foo SET Wert1 = IFNULL( @AWert1, Wert1 ) WHERE id = 4;
SELECT * FROM foo;
Heraus kommt (wie auch nicht anders zu erwarten war):
id | Wert1 |
---|
1 | test 1 |
2 | test 2 |
3 | test 3 |
4 | updated |
Aus diesem Grund ist
Update <tabelle> SET Wert1=IFNULL(Wert1,AWert1),...
wobei Wert1 das Tabellenfeld ist, AWert1 der übergebene Parameter.
einfach nur falsch wenn die das tun soll, wie beschreiben und die Beobachtung passt nicht zu dem angegebenen Statement
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)