SQL Serverでトリガーの代わりに問題が発生しています。私は挿入前に値をチェックしたい。値が存在する場合、実行された挿入は中止されます。SQL Serverで "Insert of"の入力値を取得する
-2
A
答えて
0
INSERTED擬似テーブルを使用しますが、ユニークなインデックスを使用してコードを使用しないようにしましょう。
CREATE UNIQUE INDEX UX_fnama ON fakultas(fnama)
あなたがコードを使用する
IF EXISTS (SELECT * FROM fakultas WHERE fnama IN (SELECT fnama FROM INSERTED))
...
をしたい場合はそれ以外の場合は、どちらのソリューションは、あなたがあなたのトリガでいくつかのミスを持つINSERT文
0
から複数の行を扱います。あなたはNEW.inserted
でNEW.fnama
を交換する必要があるので、
テーブルに挿入されようとしたレコードは、提出挿入と呼ばれるに格納されています。
あなたのトリガーは毎回1つの行だけが挿入されると想定しています。 しかし、これは当てはまりません。複数の行が表に挿入されることがあります。
このトリガーは、挿入トリガーの代わりです。書かれているように、レコードがテーブルに挿入されることはありません。なぜなら、レコードをテーブルに挿入するには、挿入ステートメントをトリガー自体の中に記述する必要があるからです。
トリガーの代わりにエラーを発生させるのは、通常は悪い習慣です。
このトリガーを削除し、代わりにfnama
列に一意の制約を作成することをお勧めします。これにより、テーブルにユニークな値のみを挿入できるようになり、トリガの代わりにパフォーマンスが向上します。また、行を更新したり、既に別の行に存在する列に値を設定したりすることもありません。
ALTER TABLE fakultas
ADD CONSTRAINT UC_fnama UNIQUE (fnama);
関連する問題
- 1. insertステートメントsqlから値を取得
- 2. 挿入トリガでID列の値を取得する方法SQL Server
- 3. Find Job_State of SQLエージェントジョブ - SQL Server
- 4. INSERT INSTEAD OF INSERTの列の値を設定
- 5. CでSQL INSERT OUTPUT値を取得する
- 6. INSERT INTO - Access SQL対SQL Server
- 7. INSERT(SQL Server 2008の)
- 8. Insert、Rookie用のSQL Serverトリガー
- 9. SQL Server:トリガ入力のトリガ
- 10. SQL Server 2014:INSERT INTO値とサブクエリ
- 11. jQueryの入力値を取得する
- 12. Microsoft SQL Server select select from insert
- 13. SQL Serverでinsertストアドプロシージャを使用する
- 14. 入力値を取得する* ngForイオン生成で入力2
- 15. SQL Server - スキーマのAFTER INSERTテーブル
- 16. SQL Serverの取得の行の値MAX
- 17. AFTER UPDATEトリガのSQL Server INSERT
- 18. 別のテーブルから値と列名を取得してSQL Serverテーブルに値を挿入する方法
- 19. SQL Server 2008で複数挿入のアイデンティティーを取得
- 20. SQL Serverストアドプロシージャの出力パラメータとResultSet値の両方を取得する
- 21. ブートストラップフォーム入力からの入力値を取得する
- 22. ポリマー、バダジンコンボボックス;入力値を取得する
- 23. UPDATE SQL Server 2008でINSERTする
- 24. SQL Serverで値なしの行を取得する方法?
- 25. 行番号で列の値を取得するSQL Server 2008
- 26. PentahoでSQL Serverプロシージャの戻り値を取得するには?
- 27. SQL Server COUNT()とGROUP BY SQL Serverの戻り値を取得する2016
- 28. Ajaxでフォームを入力し、その入力値を取得
- 29. Bulk SQL Server CEへのINSERT
- 30. Cascade on insert @SQL Server 2008