[pgsql-jp: 36984] Re: 副問い合わせを利用したUPDATE

AOKI KAZUYUKI aoki-kazuyuki @ nifty.com
2006年 4月 12日 (水) 23:04:35 JST


石田@苫小牧市 様

ありがとうございました。
下記のコードで無事に動作しました。

IDが解決できないので、
ターゲットのテーブル名をIDへそのまま定義することで動きました。

UPDATE tbl_true_data
  SET stateprov = w.stateprov
    , cityname = w.cityname
...
 FROM tbl_web_data AS w
 WHERE tbl_true_data.corporation_id = w.corporation_id
 AND tbl_true_data.corporation_id = 777

しかし、両方のテーブルにUPDATEをイベントにして
トリガーとして実行したら見事にデットロックしてしまいました。

お互いに片方向のみ動作するように
トリガーを書くと言うのは無理なのでしょうね (^_^;)

==========================
旅行産業の情報システム支援
mode-A (モード・エー)
            青木一之
http://mode-a.com
aoki-kazuyuki @ nifty.com
==========================
----- Original Message ----- 
From: "ISHIDA Akio" <iakio @ mono-space.net>
To: "PostgreSQL Japanese Mailing List" <pgsql-jp @ ml.postgresql.jp>
Sent: Wednesday, April 12, 2006 10:13 PM
Subject: [pgsql-jp: 36983] Re:副問い合わせを利用したUPDATE


> こんにちは。石田@苫小牧市です。
>
> 06/04/12 に AOKI KAZUYUKI<aoki-kazuyuki @ nifty.com> さんは書きました:
>> モード・エーの青木と申します。
>>
>> 副問い合わせを利用したUPDATE文を考えています。
>> もう少しスマートに書きたいのですが、
>> 何か良い方法はありますでしょうか?
>>
>> UPDATE tbl_true_data
>> SET
>> stateprov=(SELECT stateprov FROM tbl_web_data WHERE corporation_id = 
>> 777),
>> cityname=(SELECT cityname FROM tbl_web_data WHERE corporation_id = 777),
>> addressline=(SELECT addressline FROM tbl_web_data WHERE corporation_id =
>> 777),
>> bldgroom=(SELECT bldgroom FROM tbl_web_data WHERE corporation_id = 777),
>> countryname=(SELECT countryname FROM tbl_web_data WHERE corporation_id =
>> 777),
>> WHERE corporation_id = 777
>>
>> 副問い合わせを1回の記述にしたいのですが、
>> 可能でしょうか?
>
> UPDATE文にはFROM句を指定できます。
> この例だとおそらくこんな感じです。
>
> UPDATE tbl_true_data
>   SET stateprov = w.stateprov
>     , cityname = w.cityname
> ...
>  FROM tbl_web_data AS w
> WHERE corporation_id = w.corporation_id
>   AND corporation_id = 777
>
>>
>> 以上
>>
>>
>>
>
>
> --
> ISHIDA Akio <iakio @ mono-space.net/ishida @ cycleof5th.com>
>
>
> -- 
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.1.385 / Virus Database: 268.4.1/309 - Release Date: 2006/04/11
> 




pgsql-jp メーリングリストの案内