よく使用される SQL トリガーのステートメント (概要)
この記事は、一般的に使用される SQL トリガー ステートメントをすべての人に向けてまとめたものです。一定の参考値があります。必要な友人は参照できます。すべての人に役立つことを願っています。
1. 単純なトリガーを作成します
CREATE TRIGGER 触发器名称 ON 表名 FOR INSERT、UPDATE 或 DELETE AS T-SQL 语句
注: トリガー名は引用符で囲まれません。
#2. トリガーの削除
drop trigger 触发器名称
drop trigger 触发器名称,触发器名称
3. トリガーの名前変更
クエリ アナライザーによる名前の変更exec sp_rename 原名称, 新名称
4. INSERT、UPDATE または DELETE
INSTEAD OFトリガー ステートメントを実行しますが、トリガーをトリガーする SQL ステートメントは実行しません。レコードが削除されると、トリガーで指定されたステートメントが実行され、この時点では削除ステートメントは実行されなくなります。例:create trigger f on tbl instead of delete as insert into Logs...
create trigger f on tbl for update as if update(status) or update(title) sql_statement --更新了 status 或 title 列
create trigger tbl_delete on tbl for delete as declare @title varchar(200) select @title=title from deleted insert into Logs(logContent) values('删除了 title 为:' + title + '的记录')
use 数据库名
go
select * from sysobjects where xtype='TR'
sysobjects 保存着数据库的对象,其中 xtype 为 TR 的记录即为触发器对象。在 name 一列,我们可以看到触发器名称。
use 数据库名
go
exec sp_helptext '触发器名称'
sp_helptrigger には 2 つのパラメーターがあります。最初のパラメーターはテーブル名で、2 番目のパラメーターはトリガーのタイプ (char(6) です) ) Type (INSERT、UPDATE、DELETE のいずれか)。省略すると、指定したテーブル内のすべてのタイプのトリガーのプロパティが表示されます。
例:
use 数据库名 go exec sp_helptrigger tbl
再帰には、間接再帰と直接再帰の 2 種類があります。例で説明すると、それぞれ T1 と T2 という名前のテーブル 1 とテーブル 2 があり、T1 と T2 にそれぞれフリップフロップ G1 と G2 があるとします。
間接再帰: T1 で操作して G1 をトリガー、G1 で T2 で操作して G2 をトリガー、G2 で T1 で操作して G1 を再度トリガーします...
直接再帰: T1 で操作して、トリガー G1 , G1 は T1 を操作して G1 を再度トリガーします...
ネストされたトリガー
は間接再帰と似ています。間接再帰はループを形成する必要がありますが、ネストされたトリガーは必ずしも形成する必要はありませんこのようにして、リングを T1->T2->T3... と連続的にトリガーでき、最大 32 レベルのネストが可能です。
直接再帰の設定
デフォルトでは、直接再帰は禁止されています。許可するように設定するには 2 つの方法があります:
T-SQL: exec sp_dboption 'dbName', '再帰トリガー'、true
EM: データベースを右クリックし、[プロパティ] > [オプション] をクリックします。
間接再帰とネストを設定する
デフォルトでは、間接再帰とネストが許可されています。これを無効にする方法は 2 つあります:
T-SQL: exec sp_configure 'ネストされたトリガー', 0 -- 2 番目のパラメータは 1 で、許可されていることを意味します。
EM: [登録] -> [プロパティ] -> [サーバー設定] を右クリックします。
9. ロールバックのトリガー多くの登録システムでは登録後にユーザー名を変更できないことがわかりましたが、これは主にアプリケーションによって決定されます。データベース テーブルを変更する場合、そのユーザー名も変更できます。トリガーでロールバックを使用すると、ユーザー名が変更できないことをうまく認識できます。
use 数据库名 go create trigger tr on 表名 for update as if update(userName) rollback tran
重要なのは最後の 2 つの文にあり、次のように説明されています。 userName 列が更新された場合は、トランザクションをロールバックします。
10. トリガーの無効化と有効化Disable: alter table テーブル名 disable trigger トリガー名
Enable: alter table テーブル名 Enable Trigger トリガー名
複数のトリガーがある場合は、トリガー名をカンマで区切ります。
「トリガー名」を「ALL」に置き換えると、テーブルのすべてのトリガーを無効または有効にすることを意味します。
11. 挿入、変更、削除を決定する以上がよく使用される SQL トリガーのステートメント (概要)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。create TRIGGER [updatetest] ON [dbo].[TEST]
FOR INSERT, UPDATE, DELETE
AS
begin
DECLARE
@IsInsert bit,
@IsUpdate bit,
@IsDelete bit
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
SET @IsInsert = 1
ELSE
SET @IsInsert = 0
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
SET @IsUpdate = 1
ELSE
SET @IsUpdate = 0
IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
SET @IsDelete = 1
ELSE
SET @IsDelete = 0
if (@IsUpdate=1)
PRINT 'updated '
if (@IsInsert=1)
PRINT 'insert '
if (@IsDelete=1)
PRINT 'delete 'end

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

SQL における Identity とは何ですか? 具体的なコード例が必要です。SQL では、Identity は自動インクリメント数値の生成に使用される特別なデータ型です。多くの場合、テーブル内のデータの各行を一意に識別するために使用されます。 Identity 列は、各レコードが一意の識別子を持つようにするために、主キー列と組み合わせてよく使用されます。この記事では、Identity の使用方法といくつかの実用的なコード例について詳しく説明します。 Identity の基本的な使用方法は、テーブルを作成するときに Identity を使用することです。

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

解決策: 1. ログインしているユーザーがデータベースにアクセスまたは操作するための十分な権限を持っているかどうかを確認し、ユーザーが正しい権限を持っているかどうかを確認します; 2. SQL Server サービスのアカウントに指定されたファイルまたはデータベースにアクセスする権限があるかどうかを確認します。 3. 指定されたデータベース ファイルが他のプロセスによって開かれているかロックされているかどうかを確認し、ファイルを閉じるか解放して、クエリを再実行します。管理者として試してください。Management Studio をなどとして実行します。

MySQL でデータの集計と統計に SQL ステートメントを使用するにはどうすればよいですか?データの集計と統計は、データ分析と統計を実行する際の非常に重要な手順です。 MySQL は強力なリレーショナル データベース管理システムとして、データの集約と統計操作を簡単に実行できる豊富な集約機能と統計機能を提供します。この記事では、SQL ステートメントを使用して MySQL でデータの集計と統計を実行する方法を紹介し、具体的なコード例を示します。 1. カウントには COUNT 関数を使用します。COUNT 関数は最も一般的に使用されます。

データベース技術コンテスト: Oracle と SQL の違いは何ですか?データベース分野では、Oracle と SQL Server の 2 つは非常に評判の高いリレーショナル データベース管理システムです。どちらもリレーショナル データベースのカテゴリに属しますが、両者の間には多くの違いがあります。この記事では、Oracle と SQL Server の違い、実際のアプリケーションにおけるそれらの機能と利点について詳しく説明します。まず、Oracle と SQL Server の間には構文に違いがあります。
