我正在try 将duckdb(R API)中的非Null约束更改为Null约束,但无法使其保持不变.以下是这个问题的一个例子.
drv<- duckdb()
con<- dbConnect(drv)
dbExecute(con, "CREATE TABLE db(a varchar(1) NOT NULL, b varchar(1) NOT NULL)")
d<- data.table(a = 1:3, b=c("a", NA, "b"))
#test 'not null' constraint
dbWriteTable(con, name = "db", value = d, append = T)
Error: Constraint Error: NOT NULL constraint failed: db.b
因此,在这里我try 更改‘db’,以允许我在b列中使用其nA值写入‘d’
> dbSendQuery(con, "ALTER TABLE db ALTER COLUMN b SET DEFAULT NULL")
<duckdb_result 46970 connection=b6ff0 statement='ALTER TABLE db ALTER COLUMN b SET DEFAULT NULL'>
> dbWriteTable(con, name = "db", value = d, append = T)
Error: Constraint Error: NOT NULL constraint failed: db.b
更改表的‘dbSendQuery’似乎起作用了(至少没有错误),但很明显约束没有更改.有没有什么办法让这一约束变化成为现实?