1つ目: トリガーは、明示的に呼び出すことはできない特別なストアド プロシージャですが、レコードがテーブルに挿入、更新、または削除されると自動的にアクティブ化されます。したがって、トリガーを使用して、テーブルに複雑な整合性制約を実装できます。
2: SQL Server は、トリガーごとに 2 つの専用テーブル (挿入テーブルと削除テーブル) を作成します。これら 2 つのテーブルはシステムによって維持され、データベースではなくメモリ内に存在します。これら 2 つのテーブルの構造は、トリガーによって作用されるテーブルの構造と常に同じです。トリガーの実行が完了すると、トリガーに関連する 2 つのテーブルも削除されます。
Deleted テーブルには、Delete ステートメントまたは Update ステートメントの実行によりテーブルから削除されるすべての行が格納されます。
Inserted テーブルには、Insert または Update ステートメントの実行によりテーブルに挿入されるすべての行が格納されます。
3: 代わりのトリガーと後トリガー
SQL Server2000 には、代わりのトリガーと後トリガーの 2 種類のトリガーが用意されています。これら 2 つのトリガーの違いは、同じ方法でアクティブ化されることです。
トリガーの代わりに、トリガーを実行させる T-SQL ステートメントを置き換えるのに使用されます。テーブルに加えて、ビューでサポートする更新操作を拡張するために、ビューで代わりのトリガーを使用することもできます。
After トリガーは、Insert、Update、または Deleted ステートメントの後に実行され、制約チェックなどのアクションは After トリガーがアクティブになる前に発生します。 After トリガーはテーブルでのみ使用できます。
テーブルまたはビューの各変更アクション (挿入、更新、削除) には、代わりのトリガーを含めることができ、テーブルの各変更アクションには複数の After トリガーを含めることができます。
IV: トリガー実行プロセス
Insert、update、または delete ステートメントが制約に違反する場合、After トリガーが励起される前に制約のチェックが発生するため、After トリガーは実行されません。したがって、After トリガーは制約を超えることはできません。
代わりに トリガーを起動したアクションの代わりにトリガーを実行できます。これは、挿入されたテーブルと削除されたテーブルが作成されたばかりで、他の操作が発生していないときに実行されます。 Updated of トリガーは制約の前に実行されるため、制約の前処理を行うことができます。
5: T-SQLステートメントを使用してトリガーを作成します
基本的なステートメントは次のとおりです:
create Trigger_name
on {table_name | view_name}
{for | After | update ,delete ]
as
sql_statement
6: トリガーの削除:
基本的なステートメントは次のとおりです:
droptriggertrigger_name
7: データベース内の既存のトリガーを表示します:
-- データベース内の既存のトリガーを表示します。データベースの使用以下:
altertrigger_name
on {table_name | view_name}
{for | After | Both of }
[ insert, update,delete ]
as
sql_statement
Nine: 1 : Orders テーブルで Orders テーブルにトリガーを作成します。 Orders テーブルに注文レコードを挿入するときに、商品テーブルの商品のステータスが 1 (整理中) であるかどうかを確認します。注文テーブル。
トリガーorderinsert
onorders
after insert
as
if (select status from Goods,inserted
where Goods.name=inserted.goodsname)=1
begin
print '商品は処理済み'
print '注文はコミットできません'
ロールバックトランザクション --ロールバック、追加を回避
end
2: Ordersテーブルに挿入トリガーを作成し、注文を追加するときに、対応する商品の数を減らしますテーブルアイテムレコードの在庫。
注文にトリガー orderinsert1 を作成します
as
商品セット storage=storage-inserted.quantity を更新します
from Goods,inserted
where
goods.name=inser 3:削除を作成するGoods テーブルのトリガーを使用して、Goods テーブルと Orders テーブルのカスケード削除を実装します。 creats goodsdeleteを作成するgoodsdelete
を削除した後、注文から削除するdelete where goodsnamein
(削除から選択した名前)
4:注文テーブルに更新トリガーを作成して注文s table 手動で変更できないようにする注文日 (OrderDate) 列です。
create Trigorderdateupdate
onorders
after update
as
if update(orderdate)
begin
raiseerror('orderdate はできません変更されました' ,10,1)
ロールバックトランザクション
end
5: Orders テーブルに挿入トリガーを作成して、Orders テーブルに挿入された製品名が Goods テーブルに存在する必要があることを確認します。
トリガー orderinsert3 を作成します
注文時に
挿入後に
as
if (select count(*) from Goods,inserted where Goods.name=inserted.goodsname)=0
begin
print 'この注文の商品にエントリはありません'
ロールバックトランザクション
end
6: Orders テーブルに挿入トリガーを作成して、Orders テーブルに挿入された製品情報が Orders テーブルに追加されるようにします。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1
使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
