Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在sqlite中将列更改为主键_Sqlite_Ddl - Fatal编程技术网

在sqlite中将列更改为主键

在sqlite中将列更改为主键,sqlite,ddl,Sqlite,Ddl,我的应用程序中有一个表 创建表VisitDetails(VisitId整数、用户ID文本、VisitNumber 文本,作业ID整数,作业编号文本,状态ID整数,状态文本, SignatureRequired BOOL,StatusDate时间戳默认当前时间戳 ,StartDate时间戳默认当前时间戳,EndDate时间戳 默认当前时间戳(IsPPMJob BOOL) 它工作得很好,但是现在我需要修改这个表,使已经存在的列“VisitId”成为主键。谁能帮帮我吗?它可以通过向表的VisitId列

我的应用程序中有一个表

创建表VisitDetails(VisitId整数、用户ID文本、VisitNumber 文本,作业ID整数,作业编号文本,状态ID整数,状态文本, SignatureRequired BOOL,StatusDate时间戳默认当前时间戳 ,StartDate时间戳默认当前时间戳,EndDate时间戳 默认当前时间戳(IsPPMJob BOOL)


它工作得很好,但是现在我需要修改这个表,使已经存在的列“VisitId”成为主键。谁能帮帮我吗?它可以通过向表的VisitId列添加唯一约束来工作,但我正在尝试一些有效的解决方案

一旦创建了表,就不能更改SQLite tables字段的主键, 可能的解决办法是

  • 使用所需的主键创建新表
  • 复制所有数据
  • 放下旧桌子

这里是文档链接:

感谢您的回复。那么我可以添加一个新列作为唯一列吗?其目的是停止添加重复条目,因此我将在该列中放置相同的访问id,但只是名称不同。所以我可以在已经存在的表中创建一个唯一的新列吗?您可以做一件事,在将任何记录插入表之前,首先检查数据库中是否存在visitId记录,它记录存在,然后更新记录,否则插入新记录。我已经设置了该检查,就像VisitId存在一样,然后删除旧数据并插入新条目,但有时它只是同时添加重复条目。所以从技术上讲,它应该删除第一个条目。您也可以在现有列上创建一个唯一的索引。正如@Shawn建议的那样,使用复合键,如VisitId和UserId(两列的组合)add As new column。