簡體   English   中英

RODBC 錯誤 - 無法為標識列插入顯式值

[英]RODBC Error - Cannot insert explicit value for identity column

我正在嘗試使用 RODBC 包中的sqlSave方法將記錄追加到現有的 SQL 表中。

df <- data.frame(EmployeeID = c(NA, NA, NA), EmployeeName=c("Bob", "Sue", "Jane"))

sqlSave(myconn, dat=df, tablename = "Employees", append = TRUE, rownames = FALSE, colnames = FALSE, verbose = TRUE, safer = TRUE, 
        addPK = FALSE, typeInfo, varTypes, fast = TRUE, test = FALSE, nastring = NULL)

但是,我不斷收到錯誤

[RODBC] 更新 23000 544 中的執行失敗 [Microsoft][ODBC SQL Server 驅動程序][SQL Server]當 IDENTITY_INSERT 設置為 OFF 時,無法為表“Employees”中的標識列插入顯式值。

我的表應該自動創建 ID。 是什么賦予了?

添加此答案是因為我找到了解決該問題的 hack-ish 解決方法。

  1. 打開 Identity_Insert
sqlQuery(myconn, "Set Identity_Insert Employees On", errors = TRUE)
  1. 執行 sqlSave 查詢。 這里的問題是您需要手動插入 ID,這意味着您有責任驗證它們的唯一性和順序性。 就我而言,我知道這樣我就可以把我的表是空的我插入之前rownamesaddPK為TRUE。
sqlSave(
  myconn, 
  dat=df, 
  tablename = "Employees", 
  append = TRUE, rownames = TRUE, 
  colnames = FALSE, 
  verbose = TRUE, 
  safer = TRUE, 
  addPK = TRUE, 
  fast = TRUE, 
  test = FALSE, 
  nastring = NULL
)
  1. 重新關閉 Identity_Insert
sqlQuery(myconn, "Set Identity_Insert Employees Off", errors = TRUE)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM