Create SQLite table with primary key in R

Viewed 507

I am trying to create a table with a primary key for an SQLite database. Is there a way to do this with DBI? I have looked in the documentation but cannot see any examples. I am trying something like the example below.

library(DBI)
library(RSQLite)

conn <- dbConnect(RSQLite::SQLite(), "")
DBI::dbCreateTable(conn, "mytable", c(a = "integer", b = "text"), 'PRIMARY KEY("a")')
dbDisconnect(conn)
1 Answers

You could use dbExecute and send directly an SQL command:

library(DBI)
library(RSQLite)
conn <- dbConnect(SQLite())
dbExecute(conn, "
CREATE TABLE mytable
(
  a INTEGER PRIMARY KEY, 
  b TEXT
)")

# Write one row
dbExecute(conn,"insert into mytable values(1,'test')")
# Try to violate primary key
dbExecute(conn,"insert into mytable values(1,'test')")

[1] 0
[1] 1
Error: UNIQUE constraint failed: mytable.a
Related