Query

如果表存在則刪除行

  • October 29, 2018

*如果該表存在,*我想從表中刪除一行。

下面是刪除語句

DELETE 
FROM UM_CLAIM_BEHAVIOR 
WHERE UM_TENANT_ID = ?

我可以擴展此查詢以檢查表的存在,或者在執行刪除查詢之前是否有任何其他替代方法可以檢查表的存在?

根據評論,不可能為此提供獨立於平台的解決方案。

在 SQL Server 中,你可以做這樣的事情

IF EXISTS (
       SELECT 1
       FROM sys.objects AS o
       INNER JOIN sys.schemas AS s
           ON s.schema_id = o.schema_id
       WHERE CONCAT (s.NAME, '.', o.NAME) = 'dbo.UM_CLAIM_BEHAVIOR'
           AND o.type_desc = 'USER_TABLE'
       )
BEGIN
   DELETE T
   FROM UM_CLAIM_BEHAVIOR AS T
   WHERE UM_TENANT_ID = ?
END

你可以做一個獨立於平台的方法,你只需要往返伺服器。

SELECT 'DELETE FROM ' || t.table || ' WHERE WHATEVER;'
FROM information_schema.tables
WHERE table_name = 'mytable';

現在您執行返回的任何內容。如果表存在,它將返回查詢以刪除該行。如果不是,它將返回 NULL。

引用自:https://dba.stackexchange.com/questions/89440