34.1. Ʈ���� ���� ��Ŀ� ���� �Ұ�

Ʈ���Ŷ� �����ͺ��̽� �̷� ��� �� �����̴�. Ʈ���Ŵ� �����ͺ��̽����� � ������ ���� �DZ���, �Ǵ� �� �Ŀ� �ڵ����� ������ �Լ��� ����ǵ��� �ϴ� ����̴�. �� ������ INSERT, UPDATE, DELETE �̸�, �� ����� �� ���� ��ü�� �� �� ���� ����� ���� �ְ�, ����Ǵ� ������ �ο� ������ ����� ���� �ִ�. Ʈ���� �̺�Ʈ�� �߻��ϸ�, ������ Ư�� Ʈ���� �Լ��� ������ ��Ȳ���� ����ȴ�.

Ʈ���� ����� ����Ϸ���, ���� Ʈ���� �Լ��� ���� �������Ѵ�. �� �Լ��� ���ڴ� ������, ���� �ڷ����� trigger�����Ѵ�. (���ڸ� �Ѱ��־���� ���� ���������� �̸� ���ǵ� TriggerData ����ü�� ������� ������ �װ��� ����Ѵ�. - �� ���ν��� ���� �̰��� ����ϴ� ����� �����ϰ� �ִ�. - �ű��� �߰�) )

���� Ʈ���� �Լ��� ������ٸ�, �� Ʈ���� �Լ��� CREATE TRIGGER �������� Ʈ���� ����� ����ϵ��� �Ѵ�. �ϳ��� Ʈ���� �Լ��� �������� �ٸ� Ʈ���ŷ� ���� ���� �ִ�.

PostgreSQL������ �ο� ���� (ROW) Ʈ���ſ� ���� ���� (STATEMENT) Ʈ���� ��� �����Ѵ�. �ο� ������ Ʈ���� �۾��� ������ ��, ����Ǵ� �� �ο� �۾��� ���� �� ���� Ʈ���� �Լ��� ����Ǹ�, ���� ������ Ʈ���� �Լ��� �ϳ��� ������ ����� �� ���� ����ȴ�. Ư����, ����Ǵ� �ο찡 �� �ǵ� ���� ���� ���� ���� Ʈ������ ���� �� Ʈ���� �Լ��� ����ȴ�. �� �� ������ Ʈ���Ÿ� �ο� ���� Ʈ����, ���� ���� Ʈ���Ŷ� �Ҹ���.

Ʈ����� �� ����Ǵ� ������ ���� ��ó�� (BEFORE) Ʈ���ſ� ��ó�� (AFTER) Ʈ���ŷ� ���еȴ�. ���� ���� ��ó�� Ʈ������ ���� �� Ʈ���� �۾��� �ؾ��� ��Ȳ�� �߻��Ǿ��� ��, ��� �۾��� �ռ� �� Ʈ���� �Լ��� ���� ���� ����Ǹ�, ���� ���� ��ó�� Ʈ���Ŵ� �� Ʈ���� �۾��� ������ ��� ������ �۾��� ������ �� �������� ����ȴ�. �ݸ�, �ο� ���� ��ó�� Ʈ���Ŵ� �ش� �ο� �۾��� �ϱ�����, �ο� ���� ��ó�� Ʈ���Ŵ� �ش� �ο� �۾��� �� �ڿ� ���� �ݺ��ؼ� ����ȴ�. (����, �۾� ���� �������� Ʈ���Ű� �Բ� ����� ���, ���� �������� ����Ǵ� Ʈ���Ŵ� ���� ���� ��ó�� Ʈ���Ű� �ȴ�.)

���� ���� Ʈ���ſ� ���� Ʈ���� �Լ��� �ݵ�� NULL ���� �����ؾ��Ѵ�. �ο� ���� Ʈ���ſ� ���� Ʈ���� �Լ��� �ش� ���̺��� �ο츦 �����Ѵ�. (�̰��� �ڷ����� HeapTuple�̴�.) �� �ڷ����� ��ü������ ������ ���� ������ ������.

��ó�� �ο� ���� ��ó�� Ʈ���Ŵ� ���Ǹ� ��츮�� ������, �ǵ����� �ʰ� ����ڰ� �Է��� �ڷ� ���� �ƴ� �ٸ� �ڷ�� �ٲ�� ó�� �� �� �ִ�. (�Ϲ������� Ʈ���� �Լ����� ����ϴ� �� �ش� �ο�� INSERT, UPDATE �� ���� NEW, DELETE �� ���� OLD��� �̸��� ����Ѵ�.)

�ο� ���� ��ó�� Ʈ���ſ��� ȣ��Ǵ� Ʈ���� �Լ��� ���ϰ��� ���õȴ�. ���� NULL ���� ����ϴ� ���̳� ����������.

�ϳ��� �����̼ǿ� �������� Ʈ���Ÿ� �������� ���� �� Ʈ������ �̸���(���ĺ���)���� ����ȴ�. ��ó�� Ʈ������ ���� �ռ� Ʈ���ſ��� �̹� �ش� �ο찡 ���� �Ǿ��ٸ�, �� ����� �ο찡 ���ϵǾ� ���� Ʈ���ſ��� ���ȴ�. ����, �۾� ���� � Ʈ���� �Լ��� NULL ���� �����ߴٸ�, �� ���� ��� Ʈ���� �Լ� �۾��� �����ȴ�.

����������, �ο� ���� ��ó�� Ʈ���Ŵ� �ڷḦ �����ϰų�, ���� �� ��, �� �ڷ��� ��ȿ���� �˻��ϴµ� ���ȴ�. ���� ��, timestamp Į���� ����ڰ� ��� �ٸ� �ð����� �Է��ϴ��� ������ ���� �ð����� �����ϵ��� �Ѵٵ���, �ΰ��� �׸��� ���� ��ġ�ϴ��� �˻��ϴ� �۾��� �����Ѵ�. ����, �ο� ���� ��ó�� Ʈ���Ŵ� �ش� �۾� �ڿ� �̷������ �� �ڷḦ �������� �ٸ� ���̺��� �ڷḦ �����ؾ��� ��쿡 ���ȴ�. �̷��� �����ؼ� ����ϴ� ������ ��ó�� Ʈ���Ÿ� �� ���� �� �ش� �ڷᰡ �̹� �ݿ��Ǿ��ٴ� �� - �׷��� �ڷ�� ����� ���̴ٴ� ���� Ȯ���� �� �����̳�, ��ó�� Ʈ������ ���� �׷��� �ʱ� �����̴�. ��, �ٸ� Ʈ���ſ� ���ؼ� �������� �� �ڷᰡ ����� ���ɼ��� �ֱ� �����̴�. ��ó�� Ʈ���Ÿ� �������, ��ó�� Ʈ���Ÿ� ��������� �𸣰ڴٸ�, �ϴ�, ��ó�� Ʈ���Ÿ� ���� ���� ���� ȿ�����̴�. �ֳ��ϸ�, �ڷḦ �����ؾ��� ��찡 ������ ��� Ʈ���� �Լ� ���� ������ ���ϴ� ����� ����� �� �� �ֱ� �����̴�.

Ʈ���� �Լ� �ȿ��� SQL ������ ������ ���, �� �۾����� ���� �� �ٸ� Ʈ���� �Լ��� ����� �� �ִ�. �̰��� ���޾� ����Ǵ� Ʈ���Ŷ�� �Ѵ� (cascading trigger). ����� �� ���޾� ����Ǵ� Ƚ���� ������ ����. �� ���, ���� Ʈ���� �Լ��� ���ȣ��Ǵ� ��츦 �߻���ų ���� �ִ�. ���� ��, INSERT �۾����� �� Ʈ���� �Լ��� ����ǰ� �װ��� �� �ٽ� INSERT �۾��� �����ϸ鼭 ���� �Լ��� ȣ�� �ϴ� ����. �̷� ������ Ʈ���� �Լ��� �� Ʈ���Ÿ� �����ϴ� ���α׷����� å������ ���ܵд�.

Ʈ���� �Լ��� ���� ���� ���ڸ� �� �� ������, Ʈ���Ÿ� ������ ���� �� Ʈ���� �Լ��� ����� ���ڸ� ������ �� �ִ�. �̷��� �ϸ� ����� �۾��� �ϴ� ������ Ʈ���Ű� �ϳ��� Ʈ���� �Լ��� ����� �� �ִ�. ���� �� Ʈ���� �Լ����� �� ���� ���ڸ� �޾Ƽ�, ���� ����� �̸�, ���� �ð��� ����ϴ� �۾��� �Ѵٰ� ���� ��, ���� ���̺����� �� ���̺��� ����ϴ� ����� �̸� Į���� �ð� Į���� Ʈ������ ���ڷ� ������ �θ�, �������� ���̺����� ���� Ʈ���� �Լ��� ����� �� �ְ� �ȴ�. �̷��� �Ѵٸ�, INSERT �۾��� ���� �۾� ������ ������ �� ���� ���̸�, UPDATE �۾��� ���� ������ �����ڸ� ������ �� ���� ���̴�.

Ʈ���Ÿ� �����ϴ� ������ ���ν��� ������ Ʈ���� �Լ����� ����� Ʈ���� �Է� �ڷḦ ����� ����� �����մϴ�. Ʈ���� �Է� �ڷ�� INSERT, UPDATE ���ɿ��� ����ϴ� �� �ش� �ο츦 ���մϴ�. �ο� ���� Ʈ���ſ����� INSERT, UPDATE ���ɿ��� ����ϴ� NEW �ο츦, UPDATE, DELETE ���ɿ����� OLD �ο츦 ����մϴ�. ����, ���� ���� Ʈ���ſ����� �� �۾� ����� �Ǵ� �ο츦 �ٷ�� ������ �����ϴ�.