【问题标题】:Why some rows can be inserted into and some cannot? [closed]为什么有些行可以插入而有些不能? [关闭]
【发布时间】:2015-05-26 08:20:45
【问题描述】:

当我使用 Cashier 表或其他一些具有少量记录的表时,该过程继续进行,并且表被插入到外部数据库中。但是当我将收银员更改为交易数据库(400k+ 条记录)时,Visual Studio 会在“交易”附近报告错误,不胜感激。

收银员数据库(工作中)

Dim query As String = "select * into MyDatabase2.dbo.Cashier from bos_primary_db.dbo.Cashier"

事务数据库(不工作)

Dim query As String = "select * into MyDatabase2.dbo.Transaction from bos_primary_db.dbo.Transaction"

这是错误信息:

关键字“交易”附近的语法不正确

【问题讨论】:

  • 确保表 dbo.transaction 存在于 bos_primary_db 中
  • 它确实存在,但仍然出现该错误。
  • 究竟是什么错误
  • 关键字“交易”附近的语法不正确。
  • 那么@Zohar 是对的

标签: sql sql-server database vb.net


【解决方案1】:

这可能是因为Transaction 是SQL 中的保留字。 根据您的 RDBMS(您未指定),有一些方法可以“转义”它:
对于 Sql Server,您应该将保留字括在方括号中:

select * into MyDatabase2.dbo.[Transaction] from bos_primary_db.dbo.[Transaction]

对于 MySql,您应该使用撇号:

select * into MyDatabase2.dbo.`Transaction` from bos_primary_db.dbo.`Transaction`

对于 Oracle,您应该使用双引号:

select * into MyDatabase2.dbo."Transaction" from bos_primary_db.dbo."Transaction"

注意:您应始终尽量避免使用保留字。 This link 描述了我最喜欢的做法。

【讨论】:

  • 这解决了我的问题,谢谢!
  • 很高兴我能帮上忙。请考虑编辑您的问题,为可能遇到相同问题的未来用户添加相关的 RDBMS 标记。
猜你喜欢
  • 1970-01-01
  • 2020-07-25
  • 2017-01-27
  • 1970-01-01
  • 2017-08-17
  • 2021-08-20
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多