什么时候在 postgreSQL 中使用 = 和 :=?
when to use = and := in postgreSQL?
我正在使用 plpgsql 编写触发器,我想知道在 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;
=
用于比较。 :=
用于赋值。
在9.4版本中,更新了文档,明确表示没有区别。
40.5.1. Assignment
An assignment of a value to a PL/pgSQL variable is written as:
variable { := | = } expression;
[...]
Equal (=) can be used instead of PL/SQL-compliant :=
在以前的版本中,单独提到:=
作为赋值运算符,但是=
从一开始就一直在工作。
我正在使用 plpgsql 编写触发器,我想知道在 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;
=
用于比较。 :=
用于赋值。
在9.4版本中,更新了文档,明确表示没有区别。
40.5.1. Assignment
An assignment of a value to a PL/pgSQL variable is written as:
variable { := | = } expression;
[...]
Equal (=) can be used instead of PL/SQL-compliant :=
在以前的版本中,单独提到:=
作为赋值运算符,但是=
从一开始就一直在工作。