在这种情况下:如果我有一个表用户,用户从默认注册和facebook注册。
Table users
id | name
1 John (default)
2 Carl (default)
111 Steven (facebook)
...
111 Wayne (default)如果id是自动增量和唯一的,当DBMS尝试从默认注册中插入id 111时,由于惟一的限制,我将得到一个错误,因为id 111是手动插入的。因此,DBMS应该知道id 111是否存在,下一个默认注册应该是112,而不是111。
有什么办法可以避免这个错误吗?或者,处理类似案件的最佳做法是什么?
让两个用户表看起来有点过于复杂,只是为了避免这个问题。
发布于 2014-10-03 11:14:29
以下是两种替代方法。
首先,如果用户只能以两种方式注册,则可以为每一列设置单独的列。因此,users表将包含如下列:
等等,为了你想要的任何专栏。当用户以“第二种”方式注册时,您将更新现有记录,而不是插入新记录。
第二种方法可能更好。有两张桌子:
Signups表将有一个外键关系返回到Users表(可能带有NOT NULL约束)。这两个表都有自动递增的整数主键。
显然,在您的数据模型中,注册与用户是分开的,因此您应该分别对它们进行建模。然后,您可以拥有任意数量的注册,为一个给定的用户。
发布于 2014-10-03 11:04:52
Maby您可以尝试从数据库中获取最大ID值,并将+1添加到数据库中,以便进行下一次插入。这样,您将始终在当前值之上得到一个值。
https://stackoverflow.com/questions/26177779
复制相似问题