¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE TRIGGER

Name

CREATE TRIGGER  --  �������ȥꥬ�����

Synopsis

CREATE TRIGGER name { BEFORE | AFTER } { event [OR ...] }
    ON table FOR EACH { ROW | STATEMENT }
    EXECUTE PROCEDURE func ( arguments )

����

name

�������ȥꥬ����Ϳ����̾���Ǥ���

table

��¸�Υơ��֥��̾���Ǥ���

event

INSERT�� DELETE �ޤ��� UPDATE �Τɤ줫�Ǥ���

func

�桼�����󶡤���ؿ��Ǥ���

����

CREATE

�ȥꥬ�κ������������������֤�����å������Ǥ���

����

CREATE TRIGGER �Ͽ������ȥꥬ�򸽺ߤΥǡ����١�������Ͽ���ޤ������Υȥꥬ�ϥ�졼����� table �ȴ�Ϣ�Ť������ꤵ�줿�ؿ� func ��¹Ԥ��ޤ���

�ȥꥬ�ϡ����ץ�ؤ������Ϥ������(������Υ����å��� INSERT��UPDATE �ޤ��� DELETE ���Ԥ�����)�����뤤�������Ϥ��줿��(�����郎�����å����� INSERT�� UPDATE �ޤ��� DELETE ����λ������) �����夤����Ǥⵯư����ꤹ�뤳�Ȥ��Ǥ��ޤ��� ���٥�Ȥ����˥ȥꥬ����ư����ȡ����Υȥꥬ�ϻ��ꤷ�����ץ���Ф��������ά���뤳�Ȥ⡢(INSERT �� UPDATE �������Τ�) �������줿���ץ���ѹ����뤳�Ȥ�Ǥ��ޤ��� ���٥�Ȥθ�˥ȥꥬ����ư����ȡ��ǽ����������������뤤�Ϻ����ޤ�����Ƥ��ѹ����ȥꥬ�� "�Ļ�"�Ȥʤ�ޤ���

SELECT �ϹԤ������ѹ����ޤ���Τǡ� SELECT �ȥꥬ��������뤳�ȤϤǤ��ޤ��󡣤��ξ��ϡ��롼���ӥ塼���������Ŭ���Ƥ��ޤ���

���ܺ٤ˤĤ��Ƥϡ� PostgreSQL �ץ�����ޥ����� ��SPI �� �ȥꥬ�ξϤ򻲾Ȥ��Ʋ�������

����

�ơ��֥�˥ȥꥬ���������ˤϡ��桼���Ϥ��Υơ��֥���Ф� TRIGGER ���¤����ɬ�פ�����ޤ���

���ߤΥ�꡼���Ǥ� STATEMENT �ȥꥬ�ϼ�������Ƥ��ޤ���

�ȥꥬ�κ����ˡ�ˤĤ��Ƥ� DROP TRIGGER ���ޥ�ɤ򻲾Ȥ��Ʋ�������

��

���ꤵ�줿 distributor �Υ����ɤ� distributors �ơ��֥��¸�ߤ��� ���ɤ����� films �ơ��֥�˹Ԥ��ɲäޤ��Ϲ����������˸������ޤ���

CREATE TRIGGER if_dist_exists
    BEFORE INSERT OR UPDATE ON films FOR EACH ROW
    EXECUTE PROCEDURE check_primary_key ('did', 'distributors', 'did');

distributor ��õ�뤫�ޤ��Ϥ��Υ����ɤ��ѹ��������ˡ� films �ơ��֥���Ф������Ƥλ��Ȥ������ޤ���

CREATE TRIGGER if_film_exists 
    BEFORE DELETE OR UPDATE ON distributors FOR EACH ROW
    EXECUTE PROCEDURE check_foreign_key (1, 'CASCADE', 'did', 'films', 'did');

2 ���ܤ���ϡ��ʲ��Τ褦�˳��������������Ѥ��Ƽ¸����뤳�Ȥ�Ǥ��ޤ���

CREATE TABLE distributors (
    did      DECIMAL(3),
    name     VARCHAR(40),
    CONSTRAINT if_film_exists
    FOREIGN KEY(did) REFERENCES films
    ON UPDATE CASCADE ON DELETE CASCADE  
);

�ߴ���

SQL92

SQL92 �ˤ� CREATE TRIGGER �Ϥ���ޤ���

SQL99

PostgreSQL �ˤ����� CREATE TRIGGER ʸ�� SQL99 ɸ��ΰ�����������ޤ����ʲ��ε�ǽ�ϼ�������Ƥ��ޤ���

  • SQL99 �Ǥϡ��������ؤι������Ф��ƥȥꥬ��ȯ�ԤǤ��ޤ���(�㤨�С�AFTER UPDATE OF col1, col2)

  • SQL99 �Ǥϡ��ȥꥬư�������ˤƻ��Ѥ���� "old"�����"new"�Ԥ�ơ��֥����̾��������뤳�Ȥ��Ǥ��ޤ���(�㤨�� CREATE TRIGGER ... ON tablename REFERENCING OLD ROW AS somename NEW ROW AS othername ...) PostgreSQL �Ǥϡ��ȥꥬ�ؿ���ʣ���Υ桼������θ���Ǻ������뤳�Ȥ��Ǥ��ޤ��Τǡ��ǡ����ؤΥ���������ˡ�ϸ����ȼ�����ˡ�Ǽ�갷���ޤ���

  • PostgreSQL �Ǥ�ʸ��٥�Υȥꥬ�Ϥʤ����ԥ�٥�Υȥꥬ�Τ�¸�ߤ��ޤ���

  • PostgreSQL �Ǥϡ��ȥꥬ�ˤ��ư��Ȥ��ƥ��ȥ��ɥץ��������㤷���¹ԤǤ��ޤ���SQL99 �Ǥϡ�ʣ���� SQL ���ޥ�ɡ��㤨�С� CREATE TABLE ��ȥꥬ�ˤ��ư��Ȥ��Ƽ¹Ԥ��뤳�Ȥ��Ǥ��ޤ����������¤ϡ������Υ��ޥ�ɤ�¹Ԥ��륹�ȥ��ɥץ����������������뤳�ȤǴ�ñ�˲�褹�뤳�Ȥ��Ǥ��ޤ���

��Ϣ����

CREATE FUNCTION, DROP TRIGGER