PostgreSQL แƒแƒœแƒขแƒ˜แƒžแƒแƒขแƒ”แƒ แƒœแƒ”แƒ‘แƒ˜: "แƒ›แƒ™แƒ•แƒ“แƒ แƒ”แƒ‘แƒ˜แƒก" แƒšแƒแƒจแƒฅแƒแƒ แƒ—แƒ แƒ‘แƒ แƒซแƒแƒšแƒ

PostgreSQL-แƒ˜แƒก แƒจแƒ˜แƒ“แƒ แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ”แƒ‘แƒฃแƒ แƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒแƒซแƒšแƒ”แƒ•แƒก แƒ›แƒแƒก แƒ˜แƒงแƒแƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜ แƒ“แƒ "แƒแƒ แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒฌแƒ แƒแƒคแƒ˜" แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒจแƒ˜. แƒ“แƒฆแƒ”แƒก แƒฉแƒ•แƒ”แƒœ แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก แƒ’แƒแƒ•แƒแƒ›แƒแƒฎแƒ•แƒ˜แƒšแƒ”แƒ‘แƒ— แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒ˜แƒ™แƒฃแƒ  แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก DBMS แƒ“แƒ แƒ แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ›แƒแƒกแƒ—แƒแƒœ - แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ vs MVCC แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ”แƒ‘แƒ˜.

แƒ›แƒแƒ™แƒšแƒ” แƒแƒ›แƒ‘แƒแƒ•แƒ˜ แƒ“แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ:

แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ›แƒฌแƒ™แƒ แƒ˜แƒ•แƒ˜ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ UPDATE แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ: DELETE แƒ“แƒ INSERT. IN แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒ•แƒ”แƒ แƒกแƒ˜แƒ xmax แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒขแƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒฎแƒแƒ–แƒ˜; แƒ›แƒ˜แƒกแƒ˜ xmin แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ แƒฌแƒ˜แƒœแƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒก xmax แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก.

แƒแƒ› แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒซแƒ•แƒ”แƒšแƒ˜ แƒแƒœ แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ COMMIT/ROOLBACK, แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒฆแƒ˜แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ "แƒ›แƒ™แƒ•แƒ“แƒแƒ แƒ˜" (แƒ›แƒ™แƒ•แƒ“แƒแƒ แƒ˜ แƒขแƒฃแƒžแƒšแƒ”แƒ‘แƒ˜) แƒ’แƒแƒ•แƒšแƒ˜แƒกแƒแƒก VACUUM แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒฌแƒ›แƒ”แƒœแƒ“แƒ˜แƒšแƒ˜แƒ.

PostgreSQL แƒแƒœแƒขแƒ˜แƒžแƒแƒขแƒ”แƒ แƒœแƒ”แƒ‘แƒ˜: "แƒ›แƒ™แƒ•แƒ“แƒ แƒ”แƒ‘แƒ˜แƒก" แƒšแƒแƒจแƒฅแƒแƒ แƒ—แƒ แƒ‘แƒ แƒซแƒแƒšแƒ

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒแƒ  แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› "แƒ›แƒ™แƒ•แƒ“แƒ แƒ”แƒ‘แƒ—แƒแƒœ" แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— - แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ— แƒแƒœ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒ“แƒ˜แƒ“ แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒ–แƒ” แƒ“แƒ แƒชแƒแƒขแƒ แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒแƒก แƒฌแƒแƒแƒฌแƒงแƒ“แƒ”แƒ‘แƒ˜แƒ— VACUUM แƒ•แƒ”แƒ  แƒ“แƒแƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ.

#1: แƒ›แƒ” แƒ›แƒแƒ›แƒฌแƒแƒœแƒก แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ

แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒแƒ–แƒ” แƒ“แƒ แƒฃแƒชแƒ”แƒ‘ แƒฎแƒ•แƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒกแƒแƒญแƒ˜แƒ แƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ X แƒ•แƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒ›แƒ” แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒจแƒ˜:

UPDATE tbl SET X = <newX> WHERE pk = $1;

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒ”แƒกแƒ˜แƒ แƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› Y แƒ•แƒ”แƒšแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒก:

UPDATE tbl SET Y = <newY> WHERE pk = $1;

... แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒกแƒ”แƒ•แƒ” Z - แƒ แƒแƒขแƒแƒ› แƒ™แƒแƒ แƒ’แƒแƒ•แƒ— แƒ“แƒ แƒแƒก แƒฌแƒ•แƒ แƒ˜แƒšแƒ›แƒแƒœแƒ”แƒ‘แƒ–แƒ”?

UPDATE tbl SET Z = <newZ> WHERE pk = $1;

แƒแƒ› แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒแƒฎแƒšแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜? แƒ“แƒ˜แƒแƒฎ, 4 แƒชแƒแƒšแƒ˜! แƒแƒฅแƒ”แƒ“แƒแƒœ แƒ”แƒ แƒ—แƒ˜ แƒแƒฅแƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜แƒ แƒ“แƒ 3 แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒฌแƒ›แƒ˜แƒœแƒ“แƒแƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ [แƒแƒ•แƒขแƒ]แƒ•แƒแƒ™แƒฃแƒฃแƒ›แƒ˜แƒ—.

แƒแƒ  แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒ”แƒก แƒแƒกแƒ”! แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒ— โ€” แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒแƒกแƒ”:

UPDATE tbl SET X = <newX>, Y = <newY>, Z = <newZ> WHERE pk = $1;

#2: แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ, แƒšแƒฃแƒ™แƒ!

แƒแƒกแƒ” แƒ แƒแƒ›, แƒจแƒ”แƒœ แƒ›แƒแƒ˜แƒœแƒช แƒ’แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒ”แƒ— แƒ‘แƒ”แƒ•แƒ แƒ˜, แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒชแƒฎแƒ แƒ˜แƒšแƒจแƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒแƒœ แƒ’แƒแƒ“แƒแƒ›แƒงแƒ•แƒแƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก). แƒ“แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ แƒแƒ› แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒจแƒ˜:

UPDATE tbl SET X = <newX> WHERE pk BETWEEN $1 AND $2;

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒแƒ› แƒคแƒแƒ แƒ›แƒ˜แƒ— แƒฎแƒ“แƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ“แƒ แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ แƒชแƒแƒ แƒ˜แƒ”แƒšแƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒšแƒ˜แƒก แƒจแƒ”แƒ•แƒกแƒ”แƒ‘แƒ˜แƒก, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ–แƒœแƒ˜แƒ—. แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก, แƒ˜แƒก แƒ—แƒแƒ•แƒแƒ“ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒกแƒฌแƒแƒ แƒ” แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ -แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒแƒ“! แƒแƒœแƒฃ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ, แƒ—แƒฃแƒœแƒ“แƒแƒช แƒ˜แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ›แƒแƒก, แƒ แƒแƒช แƒกแƒฃแƒ แƒ“แƒ - แƒ›แƒแƒ’แƒ แƒแƒ› แƒ แƒแƒขแƒแƒ›? แƒ’แƒแƒ›แƒแƒ•แƒแƒกแƒฌแƒแƒ แƒแƒ—:

UPDATE tbl SET X = <newX> WHERE pk BETWEEN $1 AND $2 AND X IS DISTINCT FROM <newX>;

แƒ‘แƒ”แƒ•แƒ แƒ›แƒ แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒแƒกแƒ”แƒ—แƒ˜ แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ”แƒ แƒ˜ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒแƒกแƒ” แƒ แƒแƒ›, แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ›แƒแƒขแƒงแƒฃแƒ”แƒ‘แƒ˜แƒก แƒคแƒฃแƒ แƒชแƒ”แƒšแƒ˜ IS DISTINCT FROM แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜ แƒ“แƒแƒกแƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒแƒ“:
PostgreSQL แƒแƒœแƒขแƒ˜แƒžแƒแƒขแƒ”แƒ แƒœแƒ”แƒ‘แƒ˜: "แƒ›แƒ™แƒ•แƒ“แƒ แƒ”แƒ‘แƒ˜แƒก" แƒšแƒแƒจแƒฅแƒแƒ แƒ—แƒ แƒ‘แƒ แƒซแƒแƒšแƒ
... แƒ“แƒ แƒชแƒแƒขแƒ แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒกแƒ–แƒ” แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ ROW()- แƒ’แƒแƒ›แƒแƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ”แƒ‘แƒ˜:
PostgreSQL แƒแƒœแƒขแƒ˜แƒžแƒแƒขแƒ”แƒ แƒœแƒ”แƒ‘แƒ˜: "แƒ›แƒ™แƒ•แƒ“แƒ แƒ”แƒ‘แƒ˜แƒก" แƒšแƒแƒจแƒฅแƒแƒ แƒ—แƒ แƒ‘แƒ แƒซแƒแƒšแƒ

#3: แƒ›แƒ” แƒ•แƒ˜แƒชแƒœแƒแƒ‘ แƒฉแƒ”แƒ›แƒก แƒกแƒแƒงแƒ•แƒแƒ แƒ”แƒšแƒก... แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ˜แƒ—

แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ”แƒœ แƒแƒ แƒ˜ แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒ’แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒก แƒ›แƒแƒœแƒ˜แƒจแƒœแƒแƒก แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜, แƒ แƒแƒ› แƒ˜แƒก "แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”แƒแƒ‘แƒก":

UPDATE tbl SET processing = TRUE WHERE pk = $1;

แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒ”แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒœ แƒ แƒแƒฆแƒแƒชแƒ”แƒ”แƒ‘แƒก โ€‹โ€‹แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒ›แƒแƒ•แƒ” ID แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒจแƒ˜, แƒ›แƒ”แƒแƒ แƒ” แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ โ€žแƒ“แƒแƒ‘แƒšแƒแƒ™แƒ˜แƒšแƒ˜โ€œ แƒแƒ› แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ›แƒ“แƒ”.

แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ #1: แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฌแƒ˜แƒœแƒแƒ–แƒ”

แƒ›แƒแƒ“แƒ˜แƒ—, แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒฎแƒ”แƒš แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒแƒ— IS DISTINCT FROM:

UPDATE tbl SET processing = TRUE WHERE pk = $1 AND processing IS DISTINCT FROM TRUE;

แƒแƒ› แƒคแƒแƒ แƒ›แƒ˜แƒ—, แƒ›แƒ”แƒแƒ แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒ แƒแƒคแƒ”แƒ แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒจแƒ˜, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒกแƒ”แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก - แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ•แƒ แƒแƒ  แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ— แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒก โ€žแƒแƒ  แƒžแƒแƒ•แƒœแƒ˜แƒกโ€œ แƒคแƒแƒฅแƒขแƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒจแƒ˜.

แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ #2: แƒกแƒแƒ™แƒแƒœแƒกแƒฃแƒšแƒขแƒแƒชแƒ˜แƒ แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜

แƒ“แƒ˜แƒ“แƒ˜ แƒ—แƒ”แƒ›แƒ แƒชแƒแƒšแƒ™แƒ” แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒแƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒแƒชแƒ˜แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก โ€žแƒ แƒแƒ™แƒ˜โ€œ..

แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ #3: แƒกแƒฃแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒ–แƒแƒ แƒ”แƒ‘แƒ˜

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒก, แƒ แƒแƒช แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ’แƒ”แƒ›แƒแƒ แƒ—แƒแƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜แƒ—? แƒแƒœ แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒแƒฌแƒฃแƒฎแƒ”แƒ— แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ˜แƒก แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก? แƒ“แƒ แƒ—แƒฃ แƒคแƒ˜แƒฅแƒ แƒแƒ‘ แƒแƒ›แƒแƒ–แƒ”?..

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ