X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 9EDF4569EF for ; Fri, 18 Mar 2005 19:54:51 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 38926-09 for ; Fri, 18 Mar 2005 19:54:48 +0000 (GMT) Received: from boutiquenumerique.com (boutiquenumerique.com [82.67.9.10]) by svr1.postgresql.org (Postfix) with ESMTP id 4D392568A5 for ; Fri, 18 Mar 2005 19:54:46 +0000 (GMT) Received: (qmail 23471 invoked from network); 18 Mar 2005 20:54:53 +0100 Received: from unknown (HELO localhost) (boutiquenumerique-lists@192.168.0.4) by boutiquenumerique.com with SMTP; 18 Mar 2005 20:54:53 +0100 To: "Gary Stainburn" , "'pgsql-sql@postgresql.org'" Subject: Re: best way to swap two records (computer details) References: <200503181325.23293.gary.stainburn@ringways.co.uk> Message-ID: Date: Fri, 18 Mar 2005 20:54:45 +0100 From: PFC Organization: =?iso-8859-15?Q?La_Boutique_Num=E9rique?= Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-15 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit In-Reply-To: <200503181325.23293.gary.stainburn@ringways.co.uk> User-Agent: Opera M2(BETA2)/8.0 (Linux, build 987) X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.003 tagged_above=0 required=5 tests=AWL X-Spam-Level: X-Archive-Number: 200503/263 X-Sequence-Number: 20742 > My question is what's the best way to swap settings between the two > computer records and swap any software installed? Ideally I'd like it > in the form of a function where I can pass the two p_id's and return a > boolean reflecting success (true) or fail (false). I'd say something like that (generic table names) : If you're confident : UPDATE stuff SET owner = (CASE IF owner='A' THEN 'B' ELSE 'A' END) WHERE owner IN ('A','B') If you're paranoid : UPDATE stuff SET owner = (CASE IF owner='A' THEN 'B' ELSE IF owner='B' THEN 'A' ELSE owner END) WHERE owner IN ('A','B')