PostgreSQL与TSQL的等价物是什么;围棋;陈述

PostgreSQL与TSQL的等价物是什么;围棋;陈述,postgresql,tsql,Postgresql,Tsql,在T-SQL中,我可以声明: IF EXISTS (SELECT name FROM sysobjects WHERE name = 'tableName') DROP TABLE [dbo].[tableName] go 以下SQL命令的批处理终止符等价物(即“go”)是什么 DROP TABLE IF EXISTS tableName PostgreSQL的等价物是: DROP TABLE IF EXISTS tableNa

在T-SQL中,我可以声明:

IF EXISTS (SELECT name 
           FROM   sysobjects 
           WHERE  name = 'tableName') 
  DROP TABLE [dbo].[tableName] 
go 
以下SQL命令的批处理终止符等价物(即“go”)是什么

DROP TABLE IF EXISTS tableName

PostgreSQL的等价物是:

DROP TABLE IF EXISTS tableName;

因此,终止符就是SQL标准的分号

视情况而定
GO
是分隔符(分隔符)-它是在任何SQL语句中都不使用的特殊关键字。PostgreSQL使用分号
作为分隔符。在控制台psql中,您可以使用
\g

postgres=# select 10 as a
postgres-# \g
+----+
| a  |
+----+
| 10 |
+----+
(1 row)
但它并不经常使用。有时人们使用
\gset
执行SQL语句并将结果存储到
psql
局部变量。PostgreSQL可以使用分号,因为PostgreSQL语句不必包含此符号-这与T-SQL不同,因为T-SQL允许直接在SQL中使用某些过程构造-然后T-SQL需要特殊的分隔符。PostgreSQL不允许它-过程代码以字符串形式输入-并且它由撇号或自定义字符串分隔符分隔。因此,程序性条件删除可以如下所示:

DO $$BEGIN
  IF EXISTS (SELECT * FROM information_schema.tables 
               WHERE table_name = 'someTable') -- attention CASE SENSITIVITY
  THEN
    DROP TABLE "someTable"; -- attention CASE SENSITIVE syntax
  END IF; 
END $$;
或者更简单地说,如果存在某个表,则删除该表(不区分大小写的语法)。我使用了自定义字符串分隔符
$$

DO $$ -- DO command with start of string (started by custom separator)
...   -- some procedural code
$$ ;  -- end string by custom separator and semicolon as end of DO command

从SQL Server文档:

GO不是Transact-SQL语句;这是一个由用户识别的命令 sqlcmd和osql实用程序以及sqlserver管理工作室代码 编辑

语法允许在关键字go之后有一个数字,以重复前面的行多次。语法是:

GO [count]
它分批生产。PostgreSQL没有一个等价物。分号结束语句,而不是批处理。而且不可能指定执行的次数


Go引用:

我不明白-您是否在寻找匿名代码块:?您的
DROP TABLE
命令本身看起来很可靠。
GO
不是一条语句-它只是SQL Server Management Studio使用的分隔符。它不是SQL/T-SQL语言的一部分我想您需要postgres的元命令分隔符:尝试使用双反斜杠“\\”而不是“go”postgres使用SQL语言中定义的分隔符:a
您也应该开始在SQL Server中使用它:我不同意分号等同于
GO
GO
是批处理语句终止符。在一个批中可以执行多个语句,
GO
终止该批
GO
非常重要,因为它可以用来创建一个脚本,其中包含普通语句和批处理中唯一的语句。