我正在启动一个涉及小型数据库的项目,我正在考虑使用SQLite.如果我创建一个表并将其中一个列定义为文本,但存储的所有值都是整数 - 有没有办法更改列的数据类型?我正在使用SQLite Manager,我找不到允许我这样做的功能.我可以使用SQL命令执行此操作,还是SQLite的限制?也许,即使有这个限制,人们也可以找到一些方法来创建一个包含所需列类型的新表,然后将数据导入其中.
问候,尼克
我有两个表,主题和测验,这是他们的定义:
CREATE TABLE "theme" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "nom" VARCHAR NOT NULL );
CREATE TABLE quiz(
id INTEGER PRIMARY KEY,
nom VARCHAR(256) NOT NULL,
theme INTEGER NOT NULL,
niveau INTEGER NOT NULL,
pass INTEGER DEFAULT 1 NOT NULL,
jok INTEGER DEFAULT 1 NOT NULL,
etat INTEGER DEFAULT 0 NOT NULL,
FOREIGN KEY (theme) REFERENCES theme(id)
);
Run Code Online (Sandbox Code Playgroud)
字段id在表(主密钥)的主题是一种Foreign Key在测验表.当我尝试在表测验中插入一个包含值30的记录,例如作为外键时,记录成功地插入到quiz表中,尽管主题表中没有记录id = 30,我的意思是,不应该因为我有一个外键约束来拦截这个插入?
我最近从我最喜欢的Firefox切换到Chrome浏览器,但经常使用SQLite管理器.只是试着看看我是否可以避免每次使用sqlite管理器时打开和关闭空的firefox windoow.不要认为Chrome有这个扩展名.可以?
在SQlite Manager中直接执行SQL可以运行多个命令吗?(如果插入大量数据,则非常有用)
例如
insert into TestTable (Name, Age) values("Thomas", 25)
insert into TestTable (Name, Age) values("Peter", 29)
...
Run Code Online (Sandbox Code Playgroud)
谢谢
我已经在Firefox浏览器中下载了sqlite manager app并打开了sqlite manager app.
1)创建名为DBSQLTEST的数据库.
2)创建的名为SQLTEST的表包含三个字段是SLNO,NAME和AGE
3)插入新记录
但我想删除sqltest表中的' AGE '列
我使用如下的sql命令
ALTER TABLE SQLTEST DROP COLUMN AGE
SQLiteManager消息说
SQLiteManager:可能的SQL语法错误:ALTER TABLE SQLTEST DROP COLUMN AGE [near"DROP":语法错误]异常名称:NS_ERROR_FAILURE异常消息:组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[mozIStorageConnection.createStatement]
什么是错误?
以下是创建表的查询:
CREATE TABLE "FacilityRating"(
"FacilityRatingId" INTEGER PRIMARY KEY NOT NULL,
"Stars" VARCHAR,
"Facility_FacilityId" INTEGER,
"User_UserId" INTEGER,
FOREIGN KEY (Facility_FacilityId)
REFERENCES Facility(FacilityId)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (User_UserId)
REFERENCES User(UserId)
ON DELETE CASCADE
ON UPDATE CASCADE
)
Run Code Online (Sandbox Code Playgroud)
然而,当我在插入新行Facility_FacilityId和User_UserId一些随机数,SQLite不给错误,但增加了也无妨.
这是一个快照:

有什么暗示这里发生了什么?我正在使用SQLite Manager,一个Mozilla Firefox附加组件