ホームページ php教程 PHP开发 SQL Server トリガーの作成、削除、変更、表示

SQL Server トリガーの作成、削除、変更、表示

Dec 14, 2016 pm 04:05 PM

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 テーブルに追加されるようにします。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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