【发布时间】:2014-01-24 06:56:37
【问题描述】:
我是 postgres 的新手,我正在处理我的任务。我必须创建一个只有 1 列的表,然后在 pgadmin III 上运行这条语句:
BEGIN;
INSERT INTO mytable VALUES (1);
SAVEPOINT savepoint1;
INSERT INTO mytable VALUES (2);
ROLLBACK TO SAVEPOINT savepoint1;
INSERT INTO mytable VALUES (3);
SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (4);
INSERT INTO mytable VALUES (5);
SAVEPOINT savepoint3;
SELECT * FROM mytable;
--NOTE: You need to run this IF statement as PGScript
--(button next to the normal run button)
IF (CAST ((SELECT MAX(id) FROM mytable) AS INTEGER) = 4)
BEGIN
RELEASE SAVEPOINT savepoint2;
END
ELSE
BEGIN
INSERT INTO mytable VALUES(6);
END
--Run the next steps normally
SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (7);
RELEASE SAVEPOINT savepoint2;
INSERT INTO mytable VALUES (8);
ROLLBACK TO savepoint2;
COMMIT;
当我运行它时,我得到了这个错误:“IF”或附近的语法错误
这个38.6.2. Conditionals38.6.2. Conditionals已经看过了,这个我不是很懂,要不要改查询才能有
IF (CAST ((SELECT MAX(id) FROM mytable) AS INTEGER) = 4) THEN
BEGiN
然后当它结束时,我应该结束它:
END IF
为什么会出现错误??
【问题讨论】:
-
你错过了
THEN...这是IF ... THEN ... ELSE ...。你有IF ... ... ELSE。 -
@MarcB 我用 THEN 尝试过,但仍然出现错误
标签: sql postgresql if-statement