ホームページ >データベース >mysql チュートリアル >トリガーを使用して同じテーブル内の行を更新する方法: 重複する期間の解決策?
トリガーを使用した同じテーブル内の別の行の更新
問題:
レコードの維持期間が重複している場合、多くの場合、既存の範囲と重なる startDate を持つ新しいレコードが挿入されるときに、以前のレコードの終了日を更新する必要があります。
元の試行:
提供されたトリガーは、procKey が NEW 行と一致し、endDate が 20501231 である値 ADDDATE(NEW.startDate, -1) を使用して既存の行の endDate を更新しようとします。ただし、このアプローチでは、「更新できません」というエラーが発生します。ストアド関数/トリガーのテーブル 'split' は、このストアド関数/トリガーを呼び出したステートメントによってすでに使用されているためです。
解決策:
残念ながら、トリガーは使用できませんトリガーをトリガーした行と同じテーブル内の他の行を直接更新します。代わりに、別のアプローチが必要です。
ストアド プロシージャの使用:
次のロジックをカプセル化するストアド プロシージャを作成します:
このアプローチにより、単一のトランザクション内で同じテーブル内の複数の行を更新できるようになり、トリガーによって発生する可能性のある競合。
以上がトリガーを使用して同じテーブル内の行を更新する方法: 重複する期間の解決策?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。