如何更改SQLite表中列的类型?更改SQLite列类型并添加PK约束
我有:
CREATE TABLE table(
id INTEGER,
salt TEXT NOT NULL UNIQUE,
step INT,
insert_date TIMESTAMP
);
我想改变salt
的类型,只是TEXT
和id的类型为INTEGER PRIMARY KEY。
如何更改SQLite表中列的类型?更改SQLite列类型并添加PK约束
我有:
CREATE TABLE table(
id INTEGER,
salt TEXT NOT NULL UNIQUE,
step INT,
insert_date TIMESTAMP
);
我想改变salt
的类型,只是TEXT
和id的类型为INTEGER PRIMARY KEY。
在这种情况下,您可以制作盐到可为空并删除唯一约束。另外,如果ID列不包含任何空值或重复值,则可以使用sql server management studio安全地将其设为主键。下面是屏幕截图。希望这使得它更清晰: alt text http://img265.imageshack.us/img265/7418/91573473.png
或使用SQL语句:
alter table <TableName> modify salt text null
alter table <TableName> drop constraint <Unique Constraint Name>
alter table <TableName> modify id int not null
alter table <TableName> add constraint pk<Table>d primary key (id)
是的,但我认为他想知道怎么做。:) – 2009-06-09 10:08:59
这个问题是关于sqlite的,而不是关于sql server,不幸的是上面的alter table语法不被SQLite支持, – Abel 2014-05-04 21:31:58
由于未指定的RDBMS,这些都是DB2查询:
制作ID作为主键:
ALTER TABLE table
ADD CONSTRAINT pk_id
PRIMARY KEY (id)
使盐不独特:
ALTER TABLE table
DROP UNIQUE <salt-unique-constraint-name>
使盐可空:
ALTER TABLE table
ALTER COLUMN salt DROP NOT NULL
您将需要降不为空后做了一次reorg。这是通过命令提示符完成的。
reorg table <tableName>
我的答案在编辑问题之前发布,以指定使用的数据库。 – 2012-06-11 11:10:32
下面是从SQLite的手册讨论ALTER TABLE命令的摘录(参见URL:SQLite Alter Table):
SQLite支持 ALTER TABLE的有限子集。 SQLite中的ALTER TABLE命令 允许用户重命名 表或将新列添加到 现有表。不可能 重命名柱,删除列或 添加或删除 表中的约束。
正如手册所述,不可能修改列的类型或约束,例如将NULL转换为NOT NULL。然而,通过
为了在信用到期时给予抵免,我从关于bitbucket.org的hakanw's django-email-usernames项目的第1期讨论中了解到了这一点。
CREATE TABLE test_table(
id INTEGER,
salt TEXT NOT NULL UNIQUE,
step INT,
insert_date TIMESTAMP
);
ALTER TABLE test_table RENAME TO test_table_temp;
CREATE TABLE test_table(
id INTEGER PRIMARY KEY,
salt TEXT,
step INT,
insert_date TIMESTAMP
);
INSERT INTO test_table SELECT * FROM test_table_temp;
DROP TABLE test_table_temp;
注
test_table
因为SQLite的,如果你尝试命名表作为table
会产生错误。INSERT INTO
命令将失败。例如,如果原始test_table
包含两个具有相同整数的id
字段,则当您执行“INSERT INTO test_table SELECT * FROM test_table_temp;
”命令时,将收到“SQL error: PRIMARY KEY must be unique
”。
需要更多的信息,包括其他指标,约束,PK ...如果你使用MSSQL,那么请做“Script table as ...” - >“Create to” - >“New Query window”,然后粘贴这个脚本,然后有人会帮助你 – van 2009-06-09 10:22:59