PostgreSQL与TSQL的等价物是什么;围棋;陈述
在T-SQL中,我可以声明: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
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
非常重要,因为它可以用来创建一个脚本,其中包含普通语句和批处理中唯一的语句。