SQL Server とトリガーで (とにかく私にとって) 本当に奇妙なことを経験しました。詳細は次のとおりです - どれが関連するかわからないので、リストします (何か見逃した場合は、質問してください)。
- トリガーのタイプ:
INSTEAD OF INSERT
- それはテーブルの唯一のトリガーです
- 問題のデータベースは、トリガーを持つ(既存のデータベースから)コピーされました-私はこのコピーを実行しませんでした(そのためにどの方法が使用されたかわかりません)。
- コピーされたデータベース テーブルには、制約付きの新しい列が含まれています。すべてではないにしても、ほとんどが NOT NULL です。
- トリガーは、私が行うまで決して変更されませんでした-制約のある新しい列を考慮していませんでした
わかりましたので、ここに行きます:トリガーは、私が変更するまで呼び出されなかったようです(そして、何が起こっているのかを見ることができるようになったので、すべて「予期される動作」である問題を引き起こし始めました)。
- (新しい) DB テーブルには NOT NULL 制約を持つ新しい列があり、元のトリガー (INSERT) はこれを考慮していないため、INSERT は期待どおりに失敗します
- ただし、トリガーを変更する前に、INSERTは成功しました!! 繰り返しますが、このトリガーは新しい列を考慮していないことに注意してください...私の ALTER でさえそれらを考慮していませんでした (私のエラー) - ALTER アクションによって何かを「修正」したわけではありません。ただし、結果/動作の違い、前 (予期しない INSERT が成功する) と私の ALTER TRIGGER (INSERT が期待どおりに失敗する) の後は困惑しています....
トリガーをALTERING すると「有効にする」という趣旨のリソースを見つけることができませんでした-無効になっていると仮定します-これがすべてを理解できる唯一の方法です...
それで、トリガーと関係があるデータベースのコピー(ing)について何かがあるようですか?ALTER
トリガーがトリガーを突然生き返らせるのはなぜですか (またはむしろそうなるのでしょうか) (明示的にENABLE
-ingせずに)。
私は決して DBA や SQL の第一人者ではないので、それが明白であれば、恥の殿堂に入れられても問題ありません....