在复合柱上唯一

Unique on Compound Columns

我正在尝试确保 RESTAURANTIDTABLENUMBER 以及 中的值是 Unique 使用 PowerDesigner (12.5) .我已经尝试创建一个 alternate key,它在我的 .sql 文件中产生了以下结果:

create table TABLES
(
   TABLEID             int not null,
   RESTAURANTID         int not null,
   TABLENUMBER         int not null,
   primary key (TABLESID),
   key AK_mykey (RESTAURANTID, TABLENUMBER)
);

然而,我仍然可以多次为 RESTAURANTIDTABLENUMBER 输入相同的值。

我用这个 http://www.tek-tips.com/viewthread.cfm?qid=403554PowerDesigner 中创建了 alternate key

有人知道在 PowerDesigner 中实现此目标的正确方法吗?

注意: 这不是上面发布的问题的重复,因为我正在寻找一种在 PowerDesigner 中实现此问题而无需编辑的方法之后生成 sql 文件。

您只是添加了一个普通索引。您需要的是唯一索引。只需在查询中将 key AK_mykey (RESTAURANTID, TABLENUMBER) 替换为 unique key AK_mykey (RESTAURANTID, TABLENUMBER) 即可。

MySQL 中键(主键除外)的 unique 属性 作为键的扩展属性存储。

您可以通过显示进行修改,然后转到“密钥属性”对话框中的 MySQL 选项卡。

或者,在Model>Keys中,您可以使用Customize Columns and Filter按钮在按键列表中显示Ext Unique(扩展)属性,这样您就可以一次在多个键上设置此唯一 属性。

或者,您可以创建自己的 MySQL DBMS 副本并进行编辑。在 Profile>Key 下(使用右键单击),添加事件处理程序 Initialize 和以下 Event Handler Script,以便每个新键都设置 ExtUnique

Function %Initialize%(obj)
   obj.setextendedattribute "ExtUnique",true
   %Initialize% = True
End Function

在 Power Designer 中:

  1. 打开 "TABLES" table 属性(右键单击 -> 属性)
  2. 键选项卡
  3. 插入行(将其命名为"AK_mykey")
  4. 应用(先前插入的行已保存)
  5. 在 "AK_mykey" 行:右键单击 -> 属性
  6. 列选项卡
  7. 添加列按钮
  8. Select 所需的列 (RESTAURANTID, TABLENUMBER)
  9. 确定,确定,确定按钮

+1 您可以在 table 属性预览选项卡中查看结果。

alter table TABLES
   add unique AK_mykey (RESTAURANTID, TABLENUMBER);