2015-06-20 40 views
1

即時通訊使用plpgsql寫觸發器我想知道何時使用=和何時使用:=在PostgreSQL,有什麼區別?何時使用=和:=在postgreSQL中?

例如:

CREATE OR REPLACE FUNCTION on_ai_myTable() RETURNS TRIGGER AS $$ 
DECLARE 
t_ix real; 
n int; 

BEGIN 
IF NEW.time_type = 'Start' THEN 
    SELECT t.time_index FROM table_ebscb_spa_log02 t WHERE t.fn_name = NEW.fn_name AND t.time_type = 'Start' ORDER BY t.timestamp02 DESC LIMIT 1 INTO t_ix; 
     GET DIAGNOSTICS n = ROW_COUNT; 
     IF (n = 0) THEN 
     t_ix = 1; 
     ELSE 
     t_ix = t_ix + 1; 
     END IF; 
END IF; 
NEW.time_index = t_ix; 
return NEW; 
END 
$$ 
LANGUAGE plpgsql; 
+0

http://stackoverflow.com/questions/7462322/the-forgotten-assignment-operator-and-the-commonplace –

回答

1

在版本9.4中,更新了文檔以明確說明沒有區別。

Version 9.4

40.5.1。分配

一個值到一個PL/pgSQL的變量的賦值被寫爲:

變量{:= | =}表達;

[...]

等號(=)可以用來代替PL/SQL兼容:=

在以前的版本,:=單獨被提及作爲賦值運算符,但=從一開始就一直在努力。

+0

我們可以使用:=進行比較嗎? – Tim3880

+0

@ Tim3880:不。 –

2

=是用於比較。 :=用於分配。

+0

所以上面的例子是不正確的,應該說... IF(n = 0)THEN t_ix := 1; ELSE t_ix:= t_ix + 1;萬一;不是嗎? – Natysiu16

+0

你有沒有試過 - 它會工作 –

+0

'='也適用於作業。這有點令人困惑。更好地堅持':='。 –

相關問題