2009-06-30 16 views
0

フィールドid(int)name(nchar)grade(real)のテーブルtable1があります。 次のコードは機能しません。エラーや警告はありません。コードがうまく実行しますが、影響を受けた行数= 0SQLの削除クエリが機能しない理由

MSSQLサーバー

sqlConnection1.Open(); 
SqlCommand cmd = new SqlCommand("Delete from [table1] where [id] = 1", sqlConnection1); 
int c = cmd.ExecuteNonQuery(); 
sqlConnection1.Close(); 

他のすべてのクエリがうまく働いています。

+2

id 1はありますか? –

+0

id 1のレコードがないようですか? –

答えて

0

これはばかげているかもしれませんが、ID番号1のコールにデータがありますか?あなたはSQLプロファイラを介してそれが実行されて見える? SSMS経由で実行するとどうなりますか?

1

思考:あなたが発射されたトリガーを

  • [ID]と行がある1
  • を持っているのですか?

私の推測では、第二は...数が後のトリガーが考慮されているし、最後の操作からの行数であるだろう。

+0

トリガーの+1。 OPはまた、ON DELETE RESTRICTの外部キーをチェックする必要があります。 – MartinStettner

0

クエリはSQL Management Studioで実行すると機能しますか?

2

他の人が既に尋ねたことの少しの拡大。あなたのターゲットテーブルで削除されるレコードがあることは確かですか?さらに、適切なデータベースからテーブルを取得していることを確認していますか?たとえば、デフォルトはtempdbですが、ターゲット名とIDカラムを持つテーブルがあるだけです。それは結果を提供する場合、明示的にデータベースやスキーマを述べるためにあなたのコマンドを変更してみてください

 
SELECT TOP 10 * FROM [database].[schema].[table1] WHERE [id] = 1 

まずSQLプロンプトからの選択は、あなたが探しているタイプのアイテムがある確保するために行います同様:

マルクGravellさんのコメントから別に

 
DELETE FROM [database].[schema].[table1] WHERE [id] = 1 

0

ON RESTRICをDELETEと外部キー制約がある場合にも、チェックすべきトリガーについてT 'を置き換えてください(エラーメッセージが何とか消える前にあなたに届きます...)

関連する問題