【发布时间】:2021-05-09 02:14:21
【问题描述】:
要解决的问题
使用 MSSQL,我想要一个唯一的列并接受空值。
问题
-
将两行数据添加到允许具有唯一约束的空值的列中,如下面的实现中给出了以下错误:
Violation of UNIQUE KEY constraint 'UQ_...'. Cannot insert duplicate key in object 'TABLE'. The duplicate key value is (<NULL>). (2627) (SQLExecDirectW)" -
降级列会导致与
reference列相关的约束问题。约束会自动唯一命名,因此以编程方式删除很痛苦。
当前实施
alembic 操作是:
from alembic import op
import sqlalchemy as sa
#...
def upgrade():
op.add_column(
'TABLE', sa.Column('reference', sa.Integer(), nullable=True, unique=True),
)
def downgrade():
op.drop_column('TABLE', 'reference')
【问题讨论】:
-
下面的答案不是这样吗?它在
upgrade函数中 -
不用担心。我没有让答案足够清楚:)。我只是扩展了答案。希望这能让它更清楚一点
标签: sql-server python-3.x sqlalchemy alembic