31.6. ������ʧ�Է���

ÿ����������һ����ʧ������ �������� VOLATILE��STABLE������ IMMUTABLE�� ��� CREATE FUNCTION ����û���������룬��ô VOLATILE ����ȱʡ�� ��ʧ�Է����Ǹ��Ż�����һ����ŵ�����ں�������Ϊ�ij�ŵ��

���ڸ��õ��Ż��������Ӧ���ÿ����õ����ϸ����ʧ�Է�������ĺ�����

�κ��и����õĺ������������Ϊ VOLATILE�� ��������ĵ��þͲ��ᱻ�Ż������һ������û�и����ã�����������ֵ������һ����ѯ��ı䣬 ��ôҲ������Ϊ VOLATILE�� �����ĺ����������� random()��currval()��timeofday()��

����Щ�򵥵Ĺ滮������ִ�еĽ�����ѯ�ϣ�STABLE �� IMMUTABLE û��ʲô���𣺺������ڹ滮������ִ�п�ʼ��ʱ��ִ�еIJ�𲢲��� ��������滮�����沢�Һ������ã��Dz��ɾʹ��ˡ� �����һ���������Ϊ IMMUTABLE ����ʵ�����ֲ��ǣ� ��ô�ͻᵼ�������ʹ����滮��ʱ������һ������������ֵ�� �����ʹ��׼����������ʹ��һ�ֻ���滮�ĺ������ԣ����� PL/pgSQL���� �Ǻ�����ܺ����ء�

��Ϊ MVCC �Ŀ�����Ϊ������ Chapter 12����һ��ֻ���� SELECT ����ĺ������԰�ȫ�ر��Ϊ STABLE����ʹ����ѡ��ı���ܻᱻ������ѯ�޸�Ҳһ���� PostgreSQL ��Ϊһ�� STABLE ����ʹ�õ������IJ�ѯ�����Ŀ��գ� ������ڸò�ѯ���������ڶ��ῴ��һ�����ݿ�Ĺ̶���ͼ�� ��Ҫָ�����ǣ�current_timestamp �庯�������ȶ��ģ� ��Ϊ���ǵ���ֵ��һ���������Dz��ı�ġ�

ͬ���Ŀ�����ΪҲ���� IMMUTABLE ��������� SELECT ��� ͨ������һ�� IMMUTABLE ������ѡ��һ�����ݿ�ı��Dz����ǵ���Ϊ�� ��Ϊ���������ݸı䣬��ô���ֲ����Ծͽ��ı䡣 ������PostgreSQL ����ǿ���㲻������Щ���顣

һ�������Ĵ����ǰ�һ���������Ϊ IMMUTABLE����ʵ������������Ľ������ij�����ò����� ���磬һ������ʱ����ĺ��������������� timezone ���õĽ���� Ϊ�˰�ȫ���ǣ������ĺ���Ӧ�ñ��Ϊ STABLE��

ע��: �� PostgreSQL �汾 8.0 ֮ǰ�� Ҫ�� STABLE �� IMMUTABLE ���������޸����ݿ����Լ����δ��ϵͳǿ�ơ� �汾 8.0 ͨ��Ҫ������ SQL ���߹������Ժ������ܰ��� SELECT ֮��� SQL ������ǿ�����Լ���� ����ô����������ȫ��������������Ϊ�����ĺ�����Ȼ���Ե�����Щ�����޸����ݿ�� VOLATILE ������ �������ô���ˣ���ᷢ�� STABLE �� IMMUTABLE ��������ʶ���������õĺ��������ݿ������޸ġ�