0

postgresql を使用しました。テーブルを作成し、SQLフィドルでデータベーススキーマにデータを挿入した後-

CREATE TABLE stock_table
    (trade_type character varying, trade_date timestamp, trade_code_id bigint, trade_code character varying, qty_out double precision, qty_in double precision, price double precision, row_num bigint, stock_volume double precision)
;
COMMENT ON TABLE stock_table
  IS '
trade_type: 
  SI: Initial quantity in stock
  SS: Stock Sell
  SB: Stock Buy
';

INSERT INTO stock_table
    (trade_type, trade_date, trade_code_id, trade_code, qty_out, qty_in, price, row_num, stock_volume)
VALUES
    ('SB', '2016-11-30 13:35:12', 52, 'ACI', 0, 600, 1037.28, 1, 600),
    ('SI', '2016-11-30 13:37:12', 53, 'IFIC', 0, 300, 1357.38, 2, 300),
    ('SS', '2016-12-01 11:35:12', 53, 'IFIC', 100, 0, 1354.16, 3, 200),
    ('SS', '2016-12-01 13:36:37', 53, 'IFIC', 150, 0, 1355.25, 4, 50),
    ('SS', '2016-12-01 14:35:12', 52, 'ACI', 100, 0, 1035.26, 5, 500),
    ('SS', '2016-12-01 14:36:12', 52, 'ACI', 200, 0, 1035.04, 6, 300),
    ('SB', '2016-12-01 14:36:20', 53, 'IFIC', 0, 1040, 1356.44, 7, 1090),
    ('SB', '2016-12-01 16:35:12', 52, 'ACI', 0, 1560, 1045, 8, 1860),
    ('SS', '2016-12-02 13:35:12', 52, 'ACI', 120, 0, 1039.08, 9, 1740),
    ('SS', '2016-12-02 13:45:12', 53, 'IFIC', 100, 0, 1358.95, 10, 990),
    ('SB', '2016-12-02 13:55:12', 52, 'ACI', 0, 600, 1038.71, 11, 2340),
    ('SB', '2016-12-02 14:05:12', 53, 'IFIC', 0, 1040, 1363.3, 12, 2030),
    ('SS', '2016-12-03 13:35:12', 52, 'ACI', 100, 0, 1037.78, 13, 2240),
    ('SB', '2016-12-04 13:35:12', 53, 'IFIC', 0, 20, 1365.87, 14, 2050),
    ('SB', '2016-12-04 17:35:12', 52, 'ACI', 0, 50, 1054.19, 15, 2290)
;

特定の列の特定の行のデータを更新しようとしました。

update stock_table
set trade_type = 'SI'
where row_num = (SELECT row_num FROM stock_table 
                 WHERE (trade_date between '2016-12-01' and '2016-12-03')
                 and trade_code='ACI'
                 and trade_type='SB'
                 LIMIT 1);

select * from stock_table;

それは機能し、更新されたデータベースで結果を示します。しかし、クエリを実行してテーブルを個別select * from stock_tableに表示すると、最初のデータベースが表示されますが、更新はありません。更新は、実行中updateselect allクエリを同時に実行している場合にのみ表示されます。それはなぜですか?これがSQLフィドルです

4

0 に答える 0