我有一個腳本,使用DROP TABLE IF EXISTS刪除一個表的負載,這個工程。刪除行,如果表存在SQL
此腳本中還有一個刪除行,用於從另一個表中刪除我不管理的行。這個表可能存在也可能不存在。在嘗試刪除一行之前,有沒有任何檢查表存在?
這需要對MySQL和SQLServer工作
感謝 亞歷
我有一個腳本,使用DROP TABLE IF EXISTS刪除一個表的負載,這個工程。刪除行,如果表存在SQL
此腳本中還有一個刪除行,用於從另一個表中刪除我不管理的行。這個表可能存在也可能不存在。在嘗試刪除一行之前,有沒有任何檢查表存在?
這需要對MySQL和SQLServer工作
感謝 亞歷
要檢查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]';
回覆主持人回答。 – 2012-03-21 15:13:50
在我看來,右邊的第一項右側的「相關」一欄回答您的問題.... Check if table exists in SQL Server
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TABLE_NAME]') AND type in (N'U'))
對於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服務器和我的SQL之間的共同的語法。我的意思是,你可以檢查SQL Server上的表exsits使用類似:
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
你想要一個問題o問自己(根據數據庫設計):爲什麼你想從表中刪除你不確定存在的行?如果它不,但你期望它,你不是創建表而不是刪除它嗎?
無論如何,Chris Gesslers的回答完全正是你在SQL Server中所要求的,但這裏有一些異味。
在MySQL的構建物可以使用是
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'databasename'
AND table_name = 'tablename'
和檢查結果
'DROP TABLE IF EXISTS'沒有在SQL Server的工作反正。您將需要2個獨立的腳本。 – 2012-03-21 11:28:46