2016-11-09 6 views
0

私はSQLクエリを制御できません。主キーに基づいて挿入または更新します

INSERT INTO table (id, name, age) VALUES(1, "A", 19) 

変更はmysqlサーバー側で行う必要があります。これを達成するために有効にできる設定はありますか? ? (挿入クエリを変更する必要はありません) idが主キーです。

INSERT INTO table (id, name, age) VALUES(1, "B", 20) 

上記のクエリは、1、A、19行を1、B、20にubdateする必要があります。

+0

UPSERTを実行するための設定はありません。クエリを変更する必要があります。 – Viki888

+1

@ viki888 - あなたはどこにこのような「設定」がないのですか?これは「重複キー更新」と呼ばれています。もしあなたがそれについてあなた自身がわからないのであれば、間違った知識を提供してはいけません。 – Mjh

+0

@Mjh彼の質問では、彼はSQLクエリを制御することはできず、テーブルスキーマのいくつかの設定でそれを実現したいと言っていました。 – Viki888

答えて

0

これは、クエリの構文を少し変更することで実現できます。一部のDBではこれをサポートしています。 インターネットでMySqlで確認する必要があることがわかりました。

INSERT INTO table 
(id, name, age) 
VALUES(1, "A", 19) 
ON DUPLICATE KEY UPDATE 
name = "B", age = 20; 

これはupsertと呼ばれます。

0

ON DUPLICATE KEY UPDATEをサポートしています。これは、クエリを変更する必要があります。これはidは、主キーまたは少なくともuniqueであると宣言されていることを前提と

INSERT INTO table (id, name, age) 
    VALUES(1, 'B', 20) 
    ON DUPLICATE KEY UPDATE name = VALUES(name), age = VALUES(age); 

:私はこれを書いてお勧めします。

VALUES関数は、挿入されている行から新しい値を引き出す便利な方法です。

+0

これは、mysqlサーバ側では実行できないことを意味しますか? –

+0

@ AsiriLiyanaArachchi。 。 。他のデータベースでは、トリガーを使用することができます。私はこれがMySQLではうまくいかないと思っています。なぜなら、トリガーの代わりに "トリガー"をサポートしていないからです。 –

関連する問題