什么是更好:检查表是否存在或始终触发create语句

时间:2013-11-14 16:47:18

标签: c# sql sql-server-ce

是否可以始终触发create语句而不是像

那样检查它们
SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME = 'my_table_name' 

在SQL SERVER CE和C#中。 因为无论采用何种方法,总会有一个查询被触发。不是吗???

我正在使用trasaction来创建所有表。所以,我确信如果有一个表存在,那么肯定会创建所有表。

因此,如果我使用相同的事务,那么事务将在第一个create table语句中失败:但这是否是明智的表现???

2 个答案:

答案 0 :(得分:2)

  

检查表是否存在或始终触发create statement

如果该表已存在于数据库中,您将收到异常。

您可以检查表存在,删除然后创建它,例如:

if OBJECT_ID('dbo.my_table_name', 'U') IS NOT NULL
   DROP TABLE dbo.my_table_name;
--and then
CREATE TABLE ....

答案 1 :(得分:1)

如果您的意思是尝试来创建表并查找异常,那么不。例外是昂贵的,如果处理不当可能会意外终止您的程序。

最佳做法是检查表格的存在。