我有一个数据表,其中的主要唯一元素称为CRN
,它表示“课程注册号”,它是一个整数值。
在此表中,大约有4000个类别,每个类别都有一个唯一的CRN。
我的问题是,在用于迁移的架构构建器中,这是否应将CRN
设置为唯一,主要或增量?
根据我的用法,唯一是最有意义的。
CRN确实是唯一的,并且永远不会改变。我有一个脚本来更新与此CRN对应的其他列,并且将CRN设置为唯一将阻止创建同一CRN的其他行。
我没有设置任何唯一/主要/增量约束的情况下遇到的错误是,当我重新运行用于更新注册号的脚本时(例如,对于CRN),将生成新行而不是对其进行更新。所以现在我有两行相同CRN的数据。
最佳答案
如果您的密钥CRN是代理密钥,那么您应该使其成为唯一,主键和增量,因为它是代理密钥并且对您的对象没有任何意义。如果它是自然密钥,那么您不必使其递增就可以使其唯一。
如果它是代理,则用$table->increments('id'
创建它,这将使其成为主要,唯一且递增。如果它是自然键
$table->string('crn')->unique();
$table->primary('crn');
我认为您的
'crn'
似乎很自然。关于sqlite - 在Laravel迁移中确定唯一,主要还是增量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31792915/