【发布时间】:2021-05-26 19:39:12
【问题描述】:
在 C# 中使用 ODBC 操作 Access 数据库。
以下所有内容都不会创建表。每个都会产生异常Syntax error in CREATE TABLE statement.:
sqlQuery = "CREATE TABLE SpecialScans AS (SELECT * FROM Scans);"
sqlQuery = "CREATE TABLE [SpecialScans] AS (SELECT * FROM [Scans]);"
sqlQuery = "CREATE TABLE [SpecialScans] AS SELECT * FROM [Scans];"
// And all of the above with " WHERE 1=2;" to create just the schema
这遵循on the w3schools website 和其他地方指定的语法。
但是接受的答案on this question 中给出的语法可以正常工作:
sqlQuery = "SELECT * INTO [SpecialScans] FROM [Scans];"
// And with " WHERE 1=2;" to create just the schema
为什么前者失败而后者有效?
【问题讨论】:
-
访问不是真正的数据库是我能给出的最佳答案
-
好像和MS-Access SQL方言有关。
-
@Ctznkane525 这不是重点,因为它在 SQL Server 中也不起作用。关键是:每个 RDBMS 都不同,请使用正确的方言。
-
w3schools 网站(和其他几个网站)显示前一种语法是正确的。我发现没有显示有效语法的站点,因此“遵循它”有点挑战! :o)
-
您试图创建一个与另一个表具有相同结构的表这一事实表明存在数据库设计缺陷。最好将“特殊”扫描添加到常规扫描表中,并将 id 仅添加到特殊扫描表中。或者,在扫描表中添加一个“特殊”标志。