最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在postgresql中結(jié)束掉正在執(zhí)行的SQL語句操作

 更新時間:2020年12月30日 16:03:14   作者:hy.ding  
這篇文章主要介紹了在postgresql中結(jié)束掉正在執(zhí)行的SQL語句操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

結(jié)束進程兩種方式:

SELECT pg_cancel_backend(PID)

取消后臺操作,回滾未提交事物 (select);

SELECT pg_terminate_backend(PID)

中斷session,回滾未提交事物(select、update、delete、drop);

SELECT * FROM pg_stat_activity;

根據(jù)datid=10841

SELECT pg_terminate_backend (10841);

補充:PostgreSQL無法在PL / pgSQL中開始/結(jié)束事務(wù)

我正在尋求澄清如何確保plpgsql函數(shù)中的原子事務(wù),以及為數(shù)據(jù)庫進行此特定更改設(shè)置了隔離級別.

在下面顯示的plpgsql函數(shù)中,我想確保BOTH的刪除和插入成功.當我嘗試將它們包裝在一個事務(wù)中時,我收到一個錯誤:

錯誤:無法在PL / pgSQL中開始/結(jié)束事務(wù).

如果另一個用戶在此功能已刪除自定義記錄之后,但在此函數(shù)有機會插入自定義記錄之前,為情況(RAIN,NIGHT,45MPH)添加了默認行為,下面的函數(shù)執(zhí)行過程中會發(fā)生什么?是否有一個隱式事務(wù)包裝插入和刪除,以便如果另一個用戶已經(jīng)更改了此函數(shù)引用的任何一個行,兩者都將回滾?我可以設(shè)置此功能的隔離級別嗎?

create function foo(v_weather varchar(10), v_timeofday varchar(10), v_speed varchar(10),
 v_behavior varchar(10))
 returns setof CUSTOMBEHAVIOR
 as $body$
 begin
 -- run-time error if either of these lines is un-commented
 -- start transaction ISOLATION LEVEL READ COMMITTED;
 -- or, alternatively, set transaction ISOLATION LEVEL READ COMMITTED;
  delete from CUSTOMBEHAVIOR 
  where weather = 'RAIN' and timeofday = 'NIGHT' and speed= '45MPH' ;
 -- if there is no default behavior insert a custom behavior
 if not exists
  (select id from DEFAULTBEHAVIOR where a = 'RAIN' and b = 'NIGHT' and c= '45MPH') then 
  insert into CUSTOMBEHAVIOR
  (weather, timeofday, speed, behavior)
  values
  (v_weather, v_timeofday, v_speed, v_behavior);
 end if;
 return QUERY
 select * from CUSTOMBEHAVIOR where ... ;
 -- commit;
 end
 $body$
 LANGUAGE plpgsql

一個plpgsql函數(shù)在事務(wù)中自動運行.這一切都成功了,一切都失敗了.

我引用the manual on plpgsql functions:

Functions and trigger procedures are always executed within a transaction established by an outer query — they cannot start or commit that transaction, since there would be no context for them to execute in. However, a block containing an EXCEPTION clause effectively forms a subtransaction that can be rolled back without affecting the outer transaction.

所以,如果你需要,你可以捕獲理論上可能發(fā)生的異常(但是不大可能).

Details on trapping errors in the manual.

您的功能審查和簡化:

CREATE FUNCTION foo(v_weather text
   , v_timeofday text
   , v_speed text
   , v_behavior text)
 RETURNS SETOF custombehavior AS
$body$
BEGIN
DELETE FROM custombehavior
WHERE weather = 'RAIN'
AND timeofday = 'NIGHT'
AND speed = '45MPH';
INSERT INTO custombehavior (weather, timeofday, speed, behavior)
SELECT v_weather, v_timeofday, v_speed, v_behavior
WHERE NOT EXISTS (
 SELECT 1 FROM defaultbehavior
 WHERE a = 'RAIN'
 AND b = 'NIGHT'
 AND c = '45MPH'
 );
RETURN QUERY
SELECT * FROM custombehavior WHERE ... ;
END
$body$LANGUAGE plpgsql

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • postgreSQL查詢結(jié)果添加一個額外的自增序列操作

    postgreSQL查詢結(jié)果添加一個額外的自增序列操作

    這篇文章主要介紹了postgreSQL查詢結(jié)果添加一個額外的自增序列操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • postgresql 計算時間差的秒數(shù)、天數(shù)實例

    postgresql 計算時間差的秒數(shù)、天數(shù)實例

    這篇文章主要介紹了postgresql 計算時間差的秒數(shù)、天數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL之分區(qū)表(partitioning)

    PostgreSQL之分區(qū)表(partitioning)

    通過合理的設(shè)計,可以將選擇一定的規(guī)則,將大表切分多個不重不漏的子表,這就是傳說中的partitioning。比如,我們可以按時間切分,每天一張子表,比如我們可以按照某其他字段分割,總之了就是化整為零,提高查詢的效能
    2016-11-11
  • postgresql數(shù)據(jù)庫表ID自增的實現(xiàn)代碼

    postgresql數(shù)據(jù)庫表ID自增的實現(xiàn)代碼

    postgresql數(shù)據(jù)庫可以創(chuàng)建主鍵,但是沒有像mysql那樣直接指定主鍵自增的auto_increment關(guān)鍵字,因此如果在postgresql中創(chuàng)建表指定主鍵自增使用auto_increment會報錯,本文通過一個實例給大家演示自增ID的實現(xiàn),需要的朋友可以參考下
    2023-12-12
  • PostgreSQL 修改視圖的操作

    PostgreSQL 修改視圖的操作

    這篇文章主要介紹了PostgreSQL 修改視圖的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Docker環(huán)境下升級PostgreSQL的步驟方法詳解

    Docker環(huán)境下升級PostgreSQL的步驟方法詳解

    這篇文章主要介紹了Docker環(huán)境下升級PostgreSQL的步驟方法詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Windows版?PostgreSQL?利用?pg_upgrade?進行大版升級操作方法

    Windows版?PostgreSQL?利用?pg_upgrade?進行大版升級操作方法

    最近?PostgreSQL?15?版本正式發(fā)布了,新版本的各種特性和好處本文就不展開介紹了,主要介紹一下?Windows?環(huán)境下?PostgreSQL?大版本升級的方法,我們現(xiàn)在的幾個數(shù)據(jù)庫都是運行在?Windows服務(wù)器的?PostgreSQL?14,需要的朋友可以參考下
    2022-10-10
  • PostgreSQL?查看服務(wù)器版本的三種方法

    PostgreSQL?查看服務(wù)器版本的三種方法

    這篇文章主要介紹了PostgreSQL?查看服務(wù)器版本的幾種方法,本文給大家分享三種方法,結(jié)合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 解決postgresql 數(shù)據(jù)庫 update更新慢的原因

    解決postgresql 數(shù)據(jù)庫 update更新慢的原因

    這篇文章主要介紹了解決postgresql 數(shù)據(jù)庫 update更新慢的原因,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • PostgreSQL的upsert實例操作(insert on conflict do)

    PostgreSQL的upsert實例操作(insert on conflict do)

    這篇文章主要介紹了PostgreSQL的upsert實例操作(insert on conflict do),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

镇沅| 广汉市| 和硕县| 建湖县| 长泰县| 江北区| 临猗县| 泸水县| 临洮县| 平塘县| 南部县| 林芝县| 耒阳市| 花垣县| 合山市| 濮阳市| 林甸县| 奇台县| 确山县| 讷河市| 安图县| 临沧市| 临澧县| 呼玛县| 崇信县| 孟州市| 灵台县| 九台市| 平远县| 大连市| 五华县| 汉阴县| 延津县| 兴宁市| 道孚县| 赞皇县| 舞钢市| 广饶县| 台山市| 万州区| 蕲春县|