我需要将现有的db表转换为添加新列的新db表。 我有以下sql代码,它将此列的默认值设置为-1。
// Insert new column for holding appWidgetIds
db.execSQL("ALTER TABLE favorites " +
"ADD COLUMN appWidgetId INTEGER NOT NULL DEFAULT -1;");
但是如何设置列的默认值以逐行递增?
答案 0 :(得分:3)
这取决于您的DBMS。 MySQL 使用AUTO_INCREMENT
:
ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER
NOT NULL DEFAULT -1 AUTO_INCREMENT
PostgreSQL 使用CREATE SEQUENCE
:
CREATE SEQUENCE favorites_seq;
ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER
NOT NULL DEFAULT -1 nextval('favorites_seq')
SQL Server 使用IDENTITY
:
ALTER TABLE favorites ADD COLUMN appWidgetId INTEGER
IDENTITY(1,1) NOT NULL DEFAULT -1
作为旁注,我不知道你为什么要将默认设置为-1。如果他们总是积极的话,你为什么要签署整数?您应该将默认值设为0以提高效率。
答案 1 :(得分:1)
这取决于您使用的DBMS。对于MySQL,您可以使用:
ALTER TABLE x ADD COLUMN y INTEGER NOT NULL DEFAULT -1 AUTO_INCREMENT
答案 2 :(得分:0)
转换后的值是否会为新行自动递增?如果没有,你可以做3个步骤: