Mysql 复合柱上的唯一

Mysql 复合柱上的唯一,mysql,key,unique,powerdesigner,compound-key,Mysql,Key,Unique,Powerdesigner,Compound Key,我正在尝试使用PowerDesigner(12.5)确保RESTAURANTID和TABLENUMBER,中的值是唯一的。我尝试创建了一个备用键,在我的.sql文件中产生了以下结果: create table TABLES ( TABLEID int not null, RESTAURANTID int not null, TABLENUMBER int not null, primary key (TABLESID

我正在尝试使用
PowerDesigner(12.5)
确保
RESTAURANTID
TABLENUMBER
中的值是唯一的。我尝试创建了一个
备用键
,在我的
.sql
文件中产生了以下结果:

create table TABLES
(
   TABLEID             int not null,
   RESTAURANTID         int not null,
   TABLENUMBER         int not null,
   primary key (TABLESID),
   key AK_mykey (RESTAURANTID, TABLENUMBER)
);
但是,我仍然可以多次为
RESTAURANTID
TABLENUMBER
输入相同的值

我用它在
PowerDesigner
中创建了
备用键

有人知道在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
(使用右键单击)下,使用以下
event handler Script
添加事件处理程序
Initialize
,以便每个新键都设置了
ExtUnique

Function %Initialize%(obj)
   obj.setextendedattribute "ExtUnique",true
   %Initialize% = True
End Function
在Power Designer中:

  • 打开“表”表属性(右键单击->属性)
  • 键选项卡
  • 插入行(将其命名为“AK_mykey”)
  • 应用(先前插入的行已保存)
  • 在“AK_mykey”行:右键单击->属性
  • 列选项卡
  • 添加列按钮
  • 选择所需的列(RESTAURANTID、TABLENUMBER)
  • 好,好,好按钮
  • +1您可以在“表格属性预览”选项卡中检查结果

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

    您要查找的是复合关键点约束。看看这篇文章,了解更多关于这种钥匙的信息,谢谢洛伦兹。您知道如何仅使用
    PowerDesigner
    来完成此操作吗?这样我以后就不需要编辑生成的
    SQL
    文件了?对不起,我从未使用过PowerDesigner。我使用phpmyadmin。