1

アプリケーションを Sybase SQL Anywhere から SQL Server に変換する予定です。

SAでは、行が存在するかどうかを主キーでチェックする「on existing update」を多く使用しています。true の場合、更新されます (update 句を実行した場合と同じ方法で)。そうでない場合は挿入します。

SQL Server はこのようなものをサポートしていますか?

4

3 に答える 3

1

私の知る限り、これは 1 つのコマンドではサポートされていません。そして、私が見つけた最善の方法は、Jeremiah Clark のヒントに従うことでした。更新を試みてから、影響を受けるレコードの数を確認してください。ゼロの場合は、次を挿入します。

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)
于 2011-08-04T11:48:06.740 に答える
1

SQL Server 2008 以降を使用する場合は、MERGE コマンドを使用できます。ここで説明を見つけることができます:

http://technet.microsoft.com/en-us/library/bb510625(SQL.100).aspx

古い SQL を使用している場合 は、 Erick Sasseによって提案されたJeremiah Clark のソリューションで問題 ありません。

于 2011-08-04T12:37:03.393 に答える
0

SQL Server には、ハイエンドの RDBMS、ストアド プロシージャ、トリガー、UDF などのすべての機能があります。ご存じのとおり、MS SQL Server は Sybase から正確に分岐したため、共通のルートを持っています。

もちろん、いくつかのロジックを含み、いくつかの条件に応じて INSERT または UPDATE を実行する SQL ステートメントを持つことができます。または、レコードが既に見つかっている場合、TSQL は SQL Server の SQL 方言であり、これをサポートしています。などなど。

声明について具体的な質問や疑問がある場合は、現在 SA にある声明を提示してください。

于 2011-08-04T11:48:25.323 に答える