Mysql 如果SQL表存在,则删除行
我有一个脚本,它使用DROP TABLE(删除表格)删除一堆表格,如果存在的话,这是可行的 这个脚本中还有一个delete命令,用于从另一个我不管理的表中删除一行。此表可能存在,也可能不存在。在尝试删除行之前,是否需要检查表是否存在 这需要适用于MYSQL和SQLServer 谢谢Mysql 如果SQL表存在,则删除行,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有一个脚本,它使用DROP TABLE(删除表格)删除一堆表格,如果存在的话,这是可行的 这个脚本中还有一个delete命令,用于从另一个我不管理的表中删除一行。此表可能存在,也可能不存在。在尝试删除行之前,是否需要检查表是否存在 这需要适用于MYSQL和SQLServer 谢谢 亚历克斯在我看来,右边“相关”栏的第一项回答了你的问题 对于SQL Server:您可以使用: IF OBJECT_ID('tablename','U') IS NOT NULL 对于MySQL show tabl
亚历克斯在我看来,右边“相关”栏的第一项回答了你的问题 对于SQL Server:您可以使用:
IF OBJECT_ID('tablename','U') IS NOT NULL
对于MySQL
show tables like "test1";
对于SQL Server
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'testSchema' AND TABLE_NAME = 'test1'
我认为您不会在SQL server和我的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 (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]';
您想问自己一个问题(在数据库设计方面):为什么要尝试从不确定是否存在的表中删除行?如果不是,但您希望它是,您是否宁愿创建表也不删除它 无论如何,Chris Gessler的答案完全符合您在SQL Server中的要求,但这里有一些气味 MySQL中可以使用的结构是
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename'
并检查结果这一行将删除该行,如果不能,则不会抱怨
DELETE IGNORE FROM table WHERE id=1
您可以使用以下代码:
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
删除表(如果存在)
无论如何在SQL Server中都不起作用。您将需要两个单独的脚本。至少对于MySQL来说,这在不存在的表上根本不起作用,正如在提供的链接上所评论的那样。您的意思是:如果OBJECT_ID(“[MyTable]”,'U')不是NULL,请从[MyTable]中删除代码>
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