我希望这是关于如何使用SQL语句检查SQL Server 2000/2005中是否存在表的最终讨论.
当谷歌找到答案时,你会得到很多不同的答案.这样做是否有正式/后向和前向兼容的方式?
这有两种可行的方法.这两者中哪一个是标准/最佳方式?
第一种方式:
IF EXISTS (SELECT 1
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE='BASE TABLE'
AND TABLE_NAME='mytablename')
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
第二种方式:
IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL
SELECT 1 AS res ELSE SELECT 0 AS res;
Run Code Online (Sandbox Code Playgroud)
MySQL提供简单
SHOW TABLES LIKE '%tablename%';
Run Code Online (Sandbox Code Playgroud)
声明.我正在寻找类似的东西.
使用 Entity Framework Core,如果表尚不存在,有没有办法创建它?即使EnsureCreated在上下文中调用也会抛出异常:
DbSet<Ticker> Ticker { get; set }
Database.EnsureCreated();
Ticker.Add(...);
dbctx.SaveChanges(); <== exception
Run Code Online (Sandbox Code Playgroud)
结果异常:
System.Data.SqlClient.SqlException: 无效的对象名称 'Ticker'
有没有办法Ticker在插入数据之前创建表?
== 编辑==
这个问题不是创建/迁移整个数据库,数据库一直存在,它的大部分表也存在,但有些表可能不存在。所以我只需要在运行时创建一两个表。
我正在尝试检查表是否存在,但无法正常工作.
出于某种原因,count始终返回-1.我已经在数据库中有一个表.它应该返回1?
SearchEntities db = new SearchEntities();
var qry3 = "";
var sql4 = "SELECT Count(*) FROM SearchDB.INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'portland'";
var count = db.Database.ExecuteSqlCommand(sql4);
Run Code Online (Sandbox Code Playgroud)