R RODBC sqlSave在具有自动递增列的表中

时间:2017-12-12 17:17:11

标签: sql r rodbc

我有一张桌子"表1"在包含AiID和Name列的数据库中, 其中AiID是主键和自动递增的整数,并命名任何字符。

当我想使用sqlSave时:

df <- data.frame(AiID = as.integer(NA), Name = as.character("Test"))
sqlSave(channel, dat = df, tablename = "dbo.Table1", append = T, rownames = F, fast = F, test = F)

我收到错误: &#34; sqlSave出错(channel,dat = df,:无法附加到表'dbo.Table1'&#34;

我的感觉是它与自动递增的AiID有关,但是当我想插入新行时,我将如何处理R / RODBC中的那些?

频道本身正在运作,因为我可以更新现有条目。

1 个答案:

答案 0 :(得分:0)

该错误的一个可能答案是AiID的列定义。如果它是用SQL生成的函数,则可能不允许您输入任何给定值。仅当我将函数生成的列定义为主键时,这才发生在我身上。 通过将PK列值复制到新列中,将新列定义为PK并从R中生成PK值,可以附加我的值。在我的情况下,这是列的串联,在您的情况下是自动递增。 RODBC不允许您编写列的子集(据我所知)。