Teacher
テーブルにId = 111
の行がありませんが、このトランザクション(最初のトランザクション)は作成されましたが、Subject
テーブルで動作し、新しい行が挿入されました。すべての変更をロールバックしてはいけませんか?エラーがあってもトランザクションはロールバックされませんか?
BEGIN TRANSACTION
INSERT INTO Subject (Name, SupervisorId) VALUES('Statistics', 4)
UPDATE Teacher SET Name ='Hady' WHERE Id=111
COMMIT TRANSACTION
私はそれにいくつかのより多くのロジックを追加し、まだ動作していない:
Begin Try
BEGIN TRANSACTION
INSERT INTO Subject (Name, SupervisorId) VALUES('Statistics', 4)
UPDATE TeacherO SET Name ='Hady' WHERE Id=111
COMMIT TRANSACTION
End Try
Begin Catch
ROLLBACK TRANSACTION
End Catch
私はそれを考えましたので、私は「TeacherO」のテーブルを「TeacherO」に変更しましたが、これは何も変わらない、またはそれはタイプではありませんエラートランザクションは動作しますか? –
存在しないテーブルに対して 'UPDATE'を使用しようとすると、これはコンパイルすべきではありません... **既存の*行に*間違った値を設定しようとすると、エラーが発生しました** 。 ID = 2の教師がいると仮定しましょう。あなたは** UPDATE教師SET ID = 'テスト' WHERE Id = 2;で実際の**エラーを受け取ります。これはどんな場合でも無効になります... – Shnugo
私はそれを得ました、私は最初にエラー処理について読む必要があります –