【问题标题】:Very Simple Insert From Select Not Working?从选择中非常简单的插入不起作用?
【发布时间】:2014-11-17 16:51:55
【问题描述】:

我所做的只是重新制作一个表并在列上添加空常量和默认值:

原始表结构(现已重命名):

CREATE TABLE "CARTWEIGHTS_old" (
  EntryTime DateTime, 
  Employee TEXT, 
  PLUGS NUMERIC,
  ID INTEGER PRIMARY KEY, 
  PO NUMERIC, 
  FUSER INTEGER, 
  REMAN INTEGER, 
  OEM INTEGER, 
  DIGITEK INTEGER, 
  LEXMARK INTEGER, 
  PDW INTEGER, 
  TRASH INTEGER, 
  CART TEXT,
  "Voided" BOOL NOT NULL  DEFAULT 0
)

新表:

CREATE TABLE CARTWEIGHTS (
  EntryTime DateTime,
  Employee TEXT,
  PLUGS NUMERIC NOT NULL DEFAULT 0,
  ID INTEGER PRIMARY KEY,
  PO NUMERIC,
  FUSER INTEGER NOT NULL  DEFAULT 0, 
  REMAN INTEGER NOT NULL  DEFAULT 0,
  OEM INTEGER NOT NULL  DEFAULT 0, 
  DIGITEK INTEGER NOT NULL  DEFAULT 0,
  LEXMARK INTEGER NOT NULL  DEFAULT 0, 
  PDW INTEGER NOT NULL  DEFAULT 0,
  TRASH INTEGER NOT NULL  DEFAULT 0,
  CART TEXT, 
  "Voided" BOOL NOT NULL  DEFAULT 0
)

然后当我尝试运行时:

insert into CARTWEIGHTS 
select * from CARTWEIGHTS_old

CARTWEIGHTS 表未使用该信息进行更新。 SQLite 也没有给我任何错误。

【问题讨论】:

  • select * from CARTWEIGHTS_old 返回什么?
  • @AndreDuarte 它返回的正是预期的,表中的所有数据......
  • SQLite 是否支持这种类型的操作?奇怪的是它没有返回任何错误......
  • 主键有关联的序列吗?
  • @AndreDuarte 这就是我将插入切换为不包含 ID 列的答案,它起作用了。我只是希望它会抛出错误......

标签: sql select sqlite insert bulkinsert


【解决方案1】:

您的问题在于 ID 的 de 序列生成器。尝试不要在目标表中插入您的 PK:

INSERT INTO "CARTWEIGHTS"  
"EntryTime","Employee","PLUGS","PO","FUSER","REMAN","OEM","DIGITEK","LEXMARK",
"P‌​DW","TRASH","CART","Voided"  
SELECT "EntryTime","Employee","PLUGS","PO","FUSER","REMAN","OEM","DIGITEK","LEXMARK",
"P‌​DW","TRASH","CART","Voided" FROM "CARTWEIGHTS_old"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多