婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 在postgresql中結束掉正在執行的SQL語句操作

在postgresql中結束掉正在執行的SQL語句操作

熱門標簽:地圖標注和圖片名稱的區別 海豐有多少商家沒有地圖標注 打電話智能電銷機器人授權 辦公外呼電話系統 重慶自動外呼系統定制 外呼調研系統 合肥公司外呼系統運營商 美容工作室地圖標注 漯河外呼電話系統

結束進程兩種方式:

SELECT pg_cancel_backend(PID)

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

SELECT pg_terminate_backend(PID)

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

SELECT * FROM pg_stat_activity;

根據datid=10841

SELECT pg_terminate_backend (10841);

補充:PostgreSQL無法在PL / pgSQL中開始/結束事務

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

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

錯誤:無法在PL / pgSQL中開始/結束事務.

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

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函數在事務中自動運行.這一切都成功了,一切都失敗了.

我引用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.

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

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

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

您可能感興趣的文章:
  • PostgreSQL查看正在執行的任務并強制結束的操作方法
  • 解決PostgreSQL 執行超時的情況
  • PostgreSQL 實現定時job執行(pgAgent)
  • 在postgresql中通過命令行執行sql文件
  • Postgresql的pl/pgql使用操作--將多條執行語句作為一個事務
  • Postgresql psql文件執行與批處理多個sql文件操作
  • PostgreSQL 實現sql放入文件批量執行

標簽:來賓 衡陽 晉城 珠海 蚌埠 烏海 錦州 株洲

巨人網絡通訊聲明:本文標題《在postgresql中結束掉正在執行的SQL語句操作》,本文關鍵詞  在,postgresql,中,結束,掉,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在postgresql中結束掉正在執行的SQL語句操作》相關的同類信息!
  • 本頁收集關于在postgresql中結束掉正在執行的SQL語句操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 德江县| 光山县| 开平市| 高雄县| 邳州市| 龙州县| 龙井市| 吉隆县| 揭阳市| 张家口市| 宜兰县| 通江县| 浦东新区| 油尖旺区| 南川市| 洪江市| 沙湾县| 芒康县| 芮城县| 区。| 正阳县| 芮城县| 鄄城县| 广平县| 友谊县| 寿光市| 呼和浩特市| 滨州市| 贞丰县| 西宁市| 富平县| 城口县| 吐鲁番市| 偏关县| 都昌县| 元江| 沧源| 黎川县| 鄂温| 巴塘县| 高台县|