我可以在制作一张桌子之后创建一个字段AUTOINCREMENT
吗?例如,如果您创建一个这样的表:
create table person(id integer primary key, name text);
然后才意识到它需要自动增量。我该如何修复它,即在MySQL中你可以做到:
alter table person modify column id integer auto_increment
创建表是创建列AUTOINCREMENT
的唯一机会吗?
答案 0 :(得分:32)
您可以将内容转储到新表:
CREATE TABLE failed_banks_id (id integer primary key autoincrement, name text, city text, state text, zip integer, acquired_by text, close_date date, updated_date date);
INSERT INTO failed_banks_id(name, city, state, zip, acquired_by,close_date, updated_date)
SELECT name, city, state, zip, acquired_by,close_date, updated_date
FROM failed_banks;
重命名表:
DROP TABLE failed_banks;
ALTER TABLE failed_banks_id RENAME TO failed_banks;
答案 1 :(得分:11)
<强>背景强>
新密钥将是独一无二的 目前在表中的键,但它 可能与已经过的密钥重叠 以前从表中删除。至 创建独特的密钥 表的生命周期,添加 INTEGER的AUTOINCREMENT关键字 PRIMARY KEY声明。
http://www.sqlite.org/faq.html#q1
SQLite限制:
SQLite支持有限的子集 更改表。 ALTER TABLE命令 在SQLite中允许用户重命名 表或添加新列到 现有表格。这是不可能的 重命名列,删除列或 添加或删除a的约束 表
http://www.sqlite.org/lang_altertable.html
Hack似乎存在:
您似乎可以设置
PRAGMA writable_schema = ON;
然后手动更新 sqlite_master表插入“id INTEGER PRIMARY KEY“进入SQL for 表定义。我试过了 它似乎工作。但它是 危险的。如果你搞砸了,你 破坏了数据库文件。
http://www.mail-archive.com/sqlite-users@sqlite.org/msg26987.html
答案 2 :(得分:8)
简答:声明为INTEGER PRIMARY KEY的列将自动增量
因此,在创建表时,将列声明为INTEGER PRIMARY KEY,并且该列将随每个新插入自动递增。
或者您使用SQL语句ALTER在事后将列类型更改为INTEGER PRIMARY KEY,但如果您自己创建表,则最好在初始创建语句中执行此操作。
答案 3 :(得分:4)
这是可能的,而且相对容易。将数据库导出为sql文件。更改SQL文件并重新导入:
sqlite3 mydata.db .dump > /tmp/backup.sql
vi /tmp/backup.sql
mv mydata.db mydata.db.old
sqlite3 mydata.db
sqlite>.read /tmp/backup.sql
答案 4 :(得分:1)
虽然Sqlite网站为您提供了一个如何使用仅包含三个字段的表格的示例,但它会因30个字段中的一个而变得令人讨厌。假设您有一个名为OldTable的表,其中包含许多字段,其中第一个是&#34; ID&#34;充满了整数。 制作数据库的副本以进行备份。 使用命令程序点命令,
.output Oldtable.txt
.dump Oldtable
Drop Table Oldtable;
在Microsoft Word中打开Oldtable.txt或像文本编辑器一样使用grep。使用NULL查找和替换Integer字段元素。(您可能需要调整它以适合您的字段)。编辑“创建表”行,以便定义为“整数”的字段现在为INTEGER PRIMARY KEY AUTOINCREMENT。 另存为NewTable.txt
返回命令程序点
.read NewTable.txt
完成。 ID现在是自动增量。
答案 5 :(得分:1)
是的,您可以创建一个自动增量的列。修改表并添加一列。请记住,它的类型为INTEGER Primary Key。
答案 6 :(得分:1)
您可以使用SQLite Expert Personal 4
执行此操作1)选择表格,然后转到“设计”标签&gt; “列”标签。
2)单击“添加”并选择新列名称,然后键入INTEGER和Not Null&gt;确定。
3)转到“设计标签”中的“主键”标签。单击“添加”,然后选择刚刚创建的列。检查“自动增量”框。
4)点击窗口右下角的“应用”。
如果您返回“数据”标签,您会看到包含自动生成数字的新列。
答案 7 :(得分:0)
是 你安装了phpmyadmin吗?我相信如果你进入'结构'选项卡并查看右列(列出字段类型) - 我认为你可以在那里更改设置以使其自动增量。还有一个SQL查询可以执行相同的操作。
答案 8 :(得分:0)
您可以更改表格,更改列定义
答案 9 :(得分:0)
创建SQLite表后,无法更改它。您也无法更改表以向其添加整数主键。
创建表时必须添加整数主键。
答案 10 :(得分:-3)
简单答案如下,
CREATE TABLE [TEST] (
[ID] INTEGER PRIMARY KEY AUTOINCREMENT,
[NAME] VARCHAR(100));
你已经完成了。