mysql delete exists,关于mysql:如果表存在SQL,则删除行

我有一个脚本,使用DROP TABLE IF EXISTS删除一堆表,这是有效的。

此脚本中还有一个删除操作,用于删除另一个我不管理的表中的行。 此表可能存在也可能不存在。在尝试删除行之前是否有任何检查表存在?

这需要适用于MYSQL和SQLServer

谢谢

亚历克斯

DROP TABLE IF EXISTS无论如何都无法在SQL Server中运行。 您将需要2个单独的脚本。

要检入SQL SERVER,

IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TheSchema' AND  TABLE_NAME = 'TheTable'))

BEGIN

--Do Stuff

END

检查mysql:

你算一算:

SELECT COUNT(*)

FROM information_schema.tables

WHERE table_schema = '[database name]'

AND table_name = '[table name]';

这个删除该行,如果不能,则不会抱怨。

来源于此。

至少在MySQL中,这根本不适用于不存在的表,正如所提供的链接上所评论的那样。

我不认为你会在SQL服务器和我的SQL之间找到一个通用的语法。我的意思是,您可以使用以下内容检查SQL Server上的表是否存在:

if exists(select * from sys.objects where name like 'table_name')

但mySql会有自己的目录。

除非你写一个像这样的脚本:

if (sql_server) then

if exists(select * from sys.objects where name like 'table_name')

else --mySQl

--execute the mysql script

对于SQL Server:您可以使用:

IF OBJECT_ID('tablename','U') IS NOT NULL

你的意思是:IF OBJECT_ID([MyTable], U) IS NOT NULL delete from [MyTable];

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TABLE_NAME]') AND type in (N'U'))

您想问自己的一个问题(在数据库设计方面):您为什么要尝试从不确定存在的表中删除行?如果它没有,但你期望它,你宁愿创建表而不是删除它吗?

无论如何,Chris Gesslers的回答完全符合您在SQL Server中的要求,但这里有一些气味。

您可以使用的MySQL构造

SELECT table_name

FROM information_schema.tables

WHERE table_schema = 'databasename'

AND table_name = 'tablename'

并检查结果

对于MySQL

对于SQL Server

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'testSchema' AND     TABLE_NAME = 'test1'

在我看来,右侧"相关"列中的第一项回答了您的问题....检查SQL Server中是否存在表

您可以使用以下代码:

DECLARE @TABLENAME VARCHAR(20)='TableName';

IF (OBJECT_ID(@TABLENAME) IS NOT NULL )

BEGIN

execute(N'TRUNCATE TABLE ' + @TABLENAME + '' );

END

ELSE

BEGIN

PRINT 'Table NOT Exists'

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值