Ich habe eine Tabelle mit 3 generischen Schlüsseln, die auch Fremdschlüssel sind. Das ist meine Abfrage -sql wenn existiert Update sonst einfügen funktioniert nicht
IF (EXISTS(SELECT * FROM table1 WHERE col_1 =4))
BEGIN
UPDATE table1
SET col_2 = 3,
col_3 = 100
WHERE col_1 = 4
END
ELSE
BEGIN
INSERT INTO table1
(col_1, col_2, col_3)
VALUES(4, 2, 27)
END
Das gibt mir einen Syntaxfehler. Motor verwendet InnoDB. Collation: utf8_swedish_ci
Ich versuchte auch dies -
INSERT INTO table1
(col1, col2, col3)
VALUES
(:val1, :val2, :val3)
ON DUPLICATE KEY UPDATE
col2=:val2,
col3=:val3
Dies funktioniert nicht richtig, und legen Sie nur die Zeilen trotz Nachschlüssel hat.
Warum tun Sie nicht nur ein 'INSERT' mit' ON DUPLICATE KEY UPDATE? – Barmar
@Barmar Ich habe das versucht, aber es funktioniert nicht. Dokumente sagten, dass es Fehler in der Anwesenheit von mehreren Schlüsseln – user983983
in mysql gibt es eine 'ersetzen '. Sie können dies verwenden – devanand