我需要创建一个表的副本(如果它还不存在的话),这个副本需要一个现有的列成为主键。
目前我有以下sql命令(在python脚本中):
CREATE TABLE IF NOT EXISTS FilteredTable AS SELECT * FROM RawTable WHERE <cond>
ALTER TABLE FilteredTable ADD COLUMN IF NOT EXISTS (NewCol1 TEXT, etc TEXT)
ALTER TABLE FilteredTable ADD PRIMARY KEY (ColumnNameFromRaw)
这在第一次运行时效果很好,但是当在表已经存在之后再次运行时,它会抱怨主键已经存在。有没有办法把 ADD PRIMARY KEY
与 CREATE TABLE ...
命令,以便仅在需要创建表时尝试设置主键?
编辑
可以使用python代码。
sql:10.1.23-mariadb
python:2.7版
2条答案
按热度按时间a8jjtwal1#
可以在中添加额外的列和索引
CREATE TABLE
即使是来自SELECT
. 所以一步到位:注意:列名是按名称匹配的。也就是说,如果
*
有一个NewCol1
,它将进入TEXT
列。如果没有,那么NewCol1
将为空。g0czyy6m2#
这并不像纯sql解决方案那么干净,但是如果您像这样间接地访问sql,它就会起作用。。。