草庐IT

复合物

全部标签

mysql - 将 MyISAM 转换为 InnoDB,其中表具有两列(复合)PK,其中之一是自动递增

我想将我们的一些MyISAM表转换为InnoDB,以便我可以利用外键支持。然而,大多数表使用双列(复合)主键设计,其中一个列是自动递增的(这样做是出于历史原因,同时也确保了自动递增列可以作为一种其他列值上下文中记录的增量键)我意识到我们需要取消多列主键才能使用自增和InnoDB。虽然我们有数千条记录,但这些记录与其他表有关系。有没有关于如何将这些表转换为InnoDB的提示?我想出的唯一方法是首先在每个表中添加一个新列,将其设置为唯一的自增主键,然后使用脚本更新从属表以指向新的(真正唯一的)主键.谢谢史蒂夫 最佳答案 在MySQL5.

mysql - 复合主键和 Auto_Increment

这个问题在这里已经有了答案:mysqltwocolumnprimarykeywithauto-increment(4个答案)关闭9年前。我正在尝试使用其中一个自动递增的复合键,但是当我尝试输入新行时,它只是继续顺序。这是发生的事情的例子:Item_1|Item_21|11|22|32|42|5这是我想要的示例:Item_1|Item_21|11|22|12|22|3我这样创建表:CREATETABLEIFNOTEXISTS`usuarios`(`cod_user`int(11)NOTNULLAUTO_INCREMENT,`cod_user_emp`int(11)NOTNULL,PRIM

mysql - 复合主键和自动递增?什么是好的做法?

我正在开发具有Multi-Tenancy功能的SaaS应用程序,并且我决定使用单个数据库(目前是MySQLInnodb)来存储客户的数据。我选择使用复合主键,例如PK(client_id,id)。我这里有两种方法,1:自己增加“id”(通过触发器或代码)或2:将"id"设置为mysql自增。在第一种情况下,我将为每个客户提供唯一的id,因此每个客户都有id1、2、3等。在第二种情况下,所有客户的ID都会增长。这里的最佳做法是什么?我的优先事项是:性能、安全性和扩展性。谢谢! 最佳答案 您肯定希望使用自动递增的id值作为主键。这恰好有

mysql - 对复合主键执行命令

假设我有下表item_a_id,item_b_id,value其中item_a_id和item_b_id是复合主键。在我的示例中,a,b和b,a是等效的。因此我想确保item_a_id 最佳答案 在合理的当前版本的MySql中,您可以使用触发器来emulateacheckconstraint产生所需的行为。 关于mysql-对复合主键执行命令,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

mysql - 复合类(class)先决条件(a、b、c 和 x 或 y 以及 z 样式中的一个或多个)

感谢大家的投入,尤其是在赏金事件结束期间,它提供了难以置信的帮助。这是Selectcoursesthatarecompletelysatisfiedbyagivenlistofprerequisites的后续问题,并进一步说明情况。绝对建议阅读以帮助进一步理解这个问题。(类(class)和科目是不同的实体,科目只是类(class)的先决条件,不需要是其他科目的先决条件-想想高中科目导致可能的大学类(class))我的数据库是这样布局的。Prerequisite:+---------------+---------------+|Id|Name|(Junctiontable)|-----

mysql - Hibernate 不填充 AUTO_INCREMENT 列作为复合 PK、错误或反功能的一部分?

我发现Hibernate和复合键存在问题,其中一列自动递增。我正在使用MySQL和由两列组成的主键,GID和LANG。GID列设置为AUTO_INCREMENT。插入工作正常,hibernate插入新行,MySQL在GID为空时添加auto_generatedid。但是,Hibernate不会将给定对象中的GID字段设置为持久化。我听说过在hibernate中使用复合主键通常会出现问题,所以我想问一下这是hibernate中的错误,还是开发人员预谋留下的反功能(不会实现,因为没有)? 最佳答案 HibernateAnnotation

mysql - 将级联与复合主键结合使用

我的问题是我可以将级联与复合主键一起使用吗?我有一个表FbUser和一个表FbFriends。FbFriends表有UID和FID作为复合主键,在其他表中它表示为外键(UID,FID)如果我声明deletefromFbFriendswhereUID="10"andFID="2"CASCADE,是否也会删除子行? 最佳答案 ONDELETECASCADE是外键的一个属性。它不是您添加到DELETE语句中的子句。如果外键定义为删除父行时删除子行,则无论外键定义在单列还是多列上,删除都会级联。不过,就我个人而言,我不是级联删除或任何其他发

复合键中的 MySQL 列顺序

我有疑问,这是我的表格:mysql>showcreatetablewatchdog\G***************************1.row***************************Table:watchdogCreateTable:CREATETABLE`watchdog`(`index1`int(11)NOTNULLDEFAULT'0',`index2`int(11)NOTNULLDEFAULT'0',`dog`int(11)NOTNULLDEFAULT'9',PRIMARYKEY(`index1`,`index2`))ENGINE=InnoDBDEFAULT

mysql - 如何将复合唯一添加到表mysql中的列

我有一张table:user_idintCompositeUnique(deal_id+user_id+deal_type)。deal_idintdeal_typevarchar。created_ondatetime。这是我的table。我想在user_id列上创建一个唯一的组合,这样单个用户对于每个deal_type只能拥有唯一的deal_id。如何在inmysqlphpmyadmin中使复合唯一。 最佳答案 ALTERTABLEmy_tableADDUNIQUEKEY(user_id,deal_type,deal_id);

mysql - 如何在MySQL数据库中创建复合键

我在mysqlserver上工作。我在其中创建了一个名为question的表。该表的列/属性是(类(class)、主题、年份、问题)我想创建一个主键(或复合键)由(类(class)+主题+年份)组成。即对于一个特定的类(class)+科目+年份组合,只能有一个问题。只有一行与(类(class)+科目+年份)的组合,另一行的创建是不可能的。我已经完成了:primarykey(course,subject,year);但它不起作用。我仍然可以用相同的类(class)、主题、年份组合创建两行。谁能告诉我如何创建复合键属性???? 最佳答案