PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
UPDATE [ ONLY ] table SET column = { expression | DEFAULT } [, ...] [ FROM fromlist ] [ WHERE condition ]
UPDATE �ı����������������е������˵���/�ֶε�ֵ�� ֻ��Ҫ���ĵ���/�ֶ���Ҫ�� SET �Ӿ��г��֣�û����ȷ�ĵ��ֶα�������ԭ������ֵ��
ȱʡʱ��UPDATE �������������ı�������ӱ�ļ�¼�� �����ϣ��ֻ�����������ı���Ӧ��ʹ�� ONLY �Ӿ䡣
ʹ�ô�����ͬ�����ݿ������������Ϣ������һ���������ַ��������ã� ʹ���Ӳ�ѯ�������� FROM �Ӿ�����������һ���� �ĸ���������ȡ���ھ���Ļ�����
Ҫ���ı�����������UPDATE Ȩ�ޣ� ͬ���� expression ���� condition �������ᵽ���κα�ҲҪ��SELECTȨ�ޡ�
�ִ������ƣ�������ģʽ���Σ���
�� table ���ֶ����� ��Ҫʱ���ֶ������������������������±����Ρ�
������/�ֶε�һ����Ч��ֵ����ʽ�����ʽ����ʹ�ñ�������������ֶεľ���ֵ��
���ֶ�����Ϊ����ȱʡֵ�����û��ȱʡ���ʽ����������ô���� NULL����
һ������ʽ���б����������������е��ֶγ����� WHERE ����� ��������ڿ�����һ�� SELECT ���� FROM �Ӿ� ���������б���ע��Ŀ�����Բ��ܳ����� fromlist � ����������ʹ��һ�������ӣ����ʱ���������� fromlist ��һ����������ʽ���֣���
һ�����ʽ������ boolean ���͡�ֻ��������ʽ���� true ���б����¡�
�ɹ���ɺ�UPDATE ���������
UPDATE count
�������ǩ��count �Ǹ��µ������� ��� count �� 0�� ��ôû�з��� condition ���У��������Ϊ�Ǵ���
�ڳ��� FROM �Ӿ��ʱ��ʵ���Ϸ�����������Ŀ���� fromlist ���ᵽ�ı�������һ�𣬲���ÿ����������ж�����һ��Ŀ���ĸ��²����� ��ʹ�� FROM ��ʱ����Ӧ�ñ�֤����Ϊÿ����Ҫ�ĵ����������һ������С� ���仰˵��һ��Ŀ���в�Ӧ�úͳ���һ����������������������ӡ� ����������˶���һ���У���ô���������潫��ֻ��һ�����ڸ���Ŀ���У� ����ʹ��������һ������Ԥ�ڵ����顣
��Ϊ�����ȷ���ԣ�ֻ���Ӳ�ѯ���������������ǰ�ȫ�ģ� ����ͨ�����Ѷ����ұ�ʹ������Ҳ����Щ��
�ѱ� films ����ֶ� kind ��Ĵ� Drama ��Dramatic ���棺
UPDATE films SET kind = 'Dramatic' WHERE kind = 'Drama';
������ weather �е�һ�е��¶ȼ�¼���Ұѽ�ˮ����Ϊȱʡֵ��
UPDATE weather SET temp_lo = temp_lo+1, temp_hi = temp_lo+15, prcp = DEFAULT WHERE city = 'San Francisco' AND date = '2003-07-03';
���Ӹ��� Acme ��˾�ͻ������۵����ۼ�����ʹ�� FROM �Ӿ����
UPDATE employees SET sales_count = sales_count + 1 FROM accounts WHERE accounts.name = 'Acme Corporation' AND employees.id = accounts.sales_person;
ִ��ͬ���IJ�����ʹ�� WHERE �Ӿ�����Ӳ�ѯ��
UPDATE employees SET sales_count = sales_count + 1 WHERE id = (SELECT sales_person FROM accounts WHERE name = 'Acme Corporation');
��ͼ���ſ��������һ���µĿ������������ڣ������������Ŀ������ Ҫ�����������ֲ�ʹ��������ʧЧ��ʹ�ñ����㣨savepoints����
BEGIN; -- �������� SAVEPOINT sp1; INSERT INTO wines VALUES('Chateau Lafite 2003', '24'); -- �����������Ϊһ��Ψһ����Υ����ʧЧ�� -- ����������Ƿ�����Щ��� ROLLBACK TO sp1; UPDATE wines SET stock = stock + 24 WHERE winename = 'Chateau Lafite 2003'; -- ����������������� COMMIT;