PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 36. PL/Tcl - Tcl �������� | Fast Forward | Next |
���������̿����� PL/Tcl д��PostgreSQL Ҫ�������������õĹ��̱�������Ϊû�в������ҷ�������Ϊ trigger �ĺ�����
���������������ݸ����������Ϣ��ͨ������������ݵģ�
CREATE TRIGGER�����Ĵ��������ơ�
���´����������õı�Ķ��� ID��
��һ���ձ�Ԫ��Ϊǰ���ı����ֶ����Ƶ� Tcl �б� ������Tcl���� lsearch���б������Ԫ������ʱ�� ���صĴ� 1 ��ʼ����������������PostgreSQL ���ֶα�ŵĴ�ͳһ���� ���Ѿ���ɾ�������ֶ�λ�õĿյ��б�Ԫ����Ȼ����֣����������Ա�����ֶεĶ�Ӧ������ȷ�ġ���
�ɴ����������¼��������ַ���BEFORE��AFTER��
�ɴ����������¼��������ַ���ROW��STATEMENT��
�ɴ����������¼��������ַ���INSERT��UPDATE�� DELETE��
һ���������飬����INSERT/UPDATE �������±��У������DELETE��Ϊ�ա� �����������ֶ����������ġ���ЩΪ�յ��ֶβ����������г��֡�
һ���������飬����UPDATE/DELETE �������±��У������INSERT��Ϊ�ա� �����������ֶ����������ġ���ЩΪ�յ��ֶβ����������г��֡�
��ͬ��CREATE TRIGGER���������IJ���һ���� Tcl ������ ��Щ�����ڹ����������ͨ��$1...$n�����ʡ�
���������̷��ص�ֵ���ַ���OK��SKIP֮һ�� ����һ����array get Tcl ����ص����������Ķ����� �������ֵ��OK�������������IJ��� ��INSERT/UPDATE/DELETE�������������С� SKIP���ߴ�������������������غ��Ը��еIJ����� �������һ�����飬��ô������ PL/Tcl ����һ���ĺ���и��������������� ���н�������$NEW��ֻ��INSERT/UPDATE �������ã��и������С� ��Ȼ����Щֻ���ڴ�������BEFORE��FOR EACH ROWʱ�������壻����ֵ�������ԡ�
������һ��С�Ĵ��������̵����ӣ� ��ǿ�Ʊ��ڵ�һ������ֵ���еĸ��´������и��١� �Բ�������У���ֵ��ʼ��Ϊ 0 ������ÿ�θ��²����м�һ��
CREATE FUNCTION trigfunc_modcount() RETURNS trigger AS $$ switch $TG_op { INSERT { set NEW($1) 0 } UPDATE { set NEW($1) $OLD($1) incr NEW($1) } default { return OK } } return [array get NEW] $$ LANGUAGE pltcl; CREATE TABLE mytab (num integer, description text, modcnt integer); CREATE TRIGGER trig_mytab_modcount BEFORE INSERT OR UPDATE ON mytab FOR EACH ROW EXECUTE PROCEDURE trigfunc_modcount('modcnt');
��ע�ⴥ�������̱�����֪���ֶ����֣���Щ�ǴӴ������������ṩ�ġ������������ǿ��Խ����������̸����ڲ�ͬ�ı�