CREATE TRIGGER

トリガーをテーブルに登録します。

トリガーをテーブルに登録します。

構文

CREATE TRIGGER IF NOT EXISTS trigger_name ON table_name USING 'java_class'

構文の凡例

  • 大文字はリテラルを意味する
  • 小文字は、リテラルでないことを意味する
  • イタリック体は指定が任意であることを意味する
  • パイプ(|)記号はORまたはAND/ORを意味する
  • 省略記号(...)は繰り返し可能を意味する
  • 範囲記号「(」および「)」はリテラルではなく、範囲を示す

この構文には、CQL文の終了となるセミコロンは含まれていません。

説明

トリガーの実装には、なじみのあるCREATE TRIGGER構文を使用してトリガーをテーブルに登録する機能が含まれます。この実装は実験的に行われています。
CREATE TRIGGER myTrigger ON myTable USING 'org.apache.cassandra.triggers.InvertedIndex'

Cassandra 2.1以降の場合は、大文字を使ったトリガー名を二重引用符で囲む必要があります。トリガーを構成するロジックは、どのJava(JVM)言語でも記述でき、データベースの外に存在します。トリガーを実装するこの例のJavaクラスは、「org.apache.cassandra.triggers」という名前で、Apacheリポジトリ内で定義されています。テーブルに定義されたトリガーは要求されたDML文が実行される前に作動して、トランザクションのアトミック性を保証します。

カスタム・トリガー・コード(JAR)は各ノードのtriggersディレクトリーに配置します。カスタムJARは起動時に読み込まれます。トリガー・ディレクトリの場所はインストールによって異なります。
  • Cassandra 2.0.x tarボール:install_location/lib/triggers
  • Cassandra 2.1.x tarボール:install_location/conf/triggers
  • Datastax Enterprise 4.5以降:Installer-No Servicesおよびtarボール:install_location/resources/cassandra/conf/triggers
  • Datastax Enterprise 4.5以降:Installer-Servicesおよびパッケージ:/etc/dse/cassandra/triggers

Cassandra 2.1.1以降では、トリガーを作成するための軽量トランザクションをサポートしています。既存のトリガーを作成しようとすると、IF NOT EXISTSオプションを使用していない限りエラーが返されます。このオプションを使用すると、すでにそのテーブルが存在していれば、この文は何もしません。