oracle中unique怎么加,如何使用SQLAlchemy在Oracle中复制Unique约束?

作者分享了在使用Python3.4.3和SQLAlchemy1.0.8时遇到的问题,即试图在已有表的名称上创建索引时遇到名称冲突。寻求如何在创建时避免索引名冲突,即如何让SQLAlchemy直接处理UNIQUE子句,以避免硬编码索引名。
摘要由CSDN通过智能技术生成

我有一张桌子(我无法控制),我必须复制。目标模式可以与原始模式相同,因此所有索引和约束都必须在没有名称的情况下隐式定义。在

我使用的是python3.4.3和SQLAlchemy 1.0.8和cx_oracle 5.2。在

桌子是这样的:CREATE TABLE "MY_TABLE"

( "ITEMID" NUMBER(*,0) NOT NULL ENABLE,

"LABEL" NVARCHAR2(80) NOT NULL ENABLE,

"FIRSTCHILDID" NUMBER(*,0) NOT NULL ENABLE,

"LASTCHILDID" NUMBER(*,0) NOT NULL ENABLE,

"DEFAULTPARENTID" NUMBER(*,0) NOT NULL ENABLE,

"PICTUREID" NUMBER(6,0) NOT NULL ENABLE,

"SECURITYID" NUMBER(*,0) NOT NULL ENABLE,

PRIMARY KEY ("ITEMID")

UNIQUE ("LABEL"));

由于以下错误而失败:sqlalchemy.exc.DatabaseError: (cx_Oracle.DatabaseError)

ORA-00955: name is already used by an existing object

[SQL: b'CREATE UNIQUE INDEX sys_c009016 ON "TMP_MY_TABLE" (label)']

创建索引时,由于创建索引的名称与当前表的名称相同,因此创建索引失败。在

我尝试在创建之前将索引名设置为None,以给SA一个提示,但这会导致错误,因为它始终需要一个字符串。在

有什么方法可以告诉SA立即将该死的UNIQUE子句附加到表DDL中吗?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值