gpt4 book ai didi

sql - SQLite3和Alter表..之后

转载 作者:行者123 更新时间:2023-12-03 18:41:06 30 4
gpt4 key购买 nike

有没有简单的方法可以在最近的sqlite版本中修改表,使其与预定义的架构匹配?

架构:

war_id INTEGER NOT NULL, 
clanname VARCHAR(64),
clanhomepage VARCHAR(128),
date DATETIME,
server VARCHAR(64),
warmode_id INTEGER,
squad_id INTEGER,
notes TEXT, clantag String(16),
PRIMARY KEY (war_id),
FOREIGN KEY(warmode_id) REFERENCES warmodes (warmode_id),
FOREIGN KEY(squad_id) REFERENCES squads (squad_id),
FOREIGN KEY(orgamember_id) REFERENCES users (user_id)


现在我要插入
clantag VARCHAR(16)
在姓氏之后,因此与其他设置一致。

我不介意导出,删除,重新创建,但是我想知道是否有其他选择可以做到这一点,因为其他sql数据库可以处理...

最佳答案

SQlite支持添加列,如shown here。您将要面对的唯一限制是该列将位于表的末尾,但是对于正常使用而言,列顺序应该不是问题。一种替代解决方案是使用新定义创建一个新表,将所有数据插入其中,删除旧表并重命名新表,如下所示:

BEGIN TRANSACTION;
CREATE TABLE War_TMP(
war_id INTEGER NOT NULL,
clanname VARCHAR(64),
clantag VARCHAR(16),
clanhomepage VARCHAR(128),
date DATETIME,
server VARCHAR(64),
warmode_id INTEGER,
squad_id INTEGER,
notes TEXT,
PRIMARY KEY (war_id),
FOREIGN KEY(warmode_id) REFERENCES warmodes (warmode_id),
FOREIGN KEY(squad_id) REFERENCES squads (squad_id),
FOREIGN KEY(orgamember_id) REFERENCES users (user_id)
);

INSERT INTO War_TMP() SELECT war_id, clanname, "", clanhomepage,date,server,warmode_id,squad_id,notes FROM War;
DROP TABLE War;

ALTER TABLE War_TMP RENAME TO War;

COMMIT;

关于sql - SQLite3和Alter表..之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209721/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com