首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在任何表格的中间插入数据

在任何表格的中间插入数据
EN

Stack Overflow用户
提问于 2013-01-16 19:42:29
回答 4查看 2.2K关注 0票数 2

我有一个Countries(ID,Code,Name,....) table.here ID是一个自动生成的主键列。

下面是几行:

代码语言:javascript
复制
{1,AD,Andorra};
{2,AG,Antigua and Barbuda};
{3,AI,Anguilla}

现在的问题是,我找不到一种方法来添加一个新的国家代码,说'AH‘,在这种方式下,表自动变得像..

代码语言:javascript
复制
{1,AD,Andorra} 
{2,AG,Antigua and Barbuda}
{3,AH,......}
{4,AI,Anguilla}

换句话说,如果我需要更改一些ID值,我需要按IDCODE排序列表,.Its ok。我在ID上有一个聚集索引。

请,请给我一个建议。

EN

回答 4

Stack Overflow用户

发布于 2013-01-16 19:47:38

ID (作为标准主键)不用于排序目的。你不应该依赖它。我建议您改为添加SortIndex字段。然后在两个简单的查询中

代码语言:javascript
复制
UPDATE Countries set SortIndex = SortIndex+1 WHERE SortIndex>= [your index]

代码语言:javascript
复制
INSERT INTO Countries VALUES (...)

你会得到你想要的。另外,请不要忘记在select查询中添加ORDER BY SortIndex

票数 4
EN

Stack Overflow用户

发布于 2013-01-16 19:50:00

像这样改变实体的pk值可能会导致痛苦的世界。一旦ID被分配给一个特定的实体,它就不应该改变。

例如,您有另一个表,其中包含一个国家/地区id的FK。在您的示例中,与Anguilla相关的其他行现在将与"AH“表示的国家/地区相关。

听起来您对国家代码的字母顺序很感兴趣。所以为了排序,你只需要ORDER BY Code -你不应该改变pk值来适应你所需要的排序顺序

票数 3
EN

Stack Overflow用户

发布于 2013-01-16 19:52:16

你能解释一下你为什么要这样做吗?在我看来,这毫无意义。也许你应该添加一个"SortOrder“列或者别的什么?如果ID是某种业务规则的一部分,则应尽可能更改设计。

编辑:正如在其他一些帖子中已经回答的那样:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14357625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档