English 中文(简体)
如何重新排序主要关键?
原标题:How reorder primary key?

我删除了我“表型”中的一行(第20段),请让我知道,如何调整目录(主要关键)? 当时为19岁之后的21岁。

增 编

最佳回答

我们不能。 你们最接近的是<代码>truncate table,这将降低表率并重新计算,这意味着你失去表中的所有数据,而ID柜被重新定位为0。 除此以外,不论该记录是否仍然存在,都永远从最后插入的记录中加一。 当然,你可以写信确定你现有的所有身份证件,但随后插入,这仍然造成新的差距。 更确切地说,如果连续次序没有差距,你想要的是,自动递增的身份证不是实现这一目标的适当途径。 在你人工跟踪这一命令的另外一个领域。

问题回答

如果你足够注意你的主要关键价值,即这种价值是不必要的,那么你就首先应该使用自动编号的主要钥匙。

自动编号的关键是,你说“只要钥匙是独一无二的,我不会真正关心其价值”。

用主要钥匙捐赠。 他们永远不应改变,你不应把他们用在你们的 app中,而只是坐在桌旁。

添加一个新的栏目,如果你需要一个无差别指数,并在插入/移走时相应地更新该栏。 这可能像你现在所做的无用工作一样好,但后来会给你留下许多痛苦。

为此:

UPDATE tbl SET catid = (SELECT COUNT(*) FROM tbl t WHERE t.catid <= tbl.catid);

您也不妨重新思考/重新设计。 在删除一行时重新排列整个表格似乎可能是实际的或必要的。

实际上,你能够做到。

如果你的浏览量具有独特性,那么你正在使用PHPmyAdmin

  1. Delete the Column with the Primary ID
  2. Read the Column with Primary Key and Auto Increment enabled.

你通过重新排列主要钥匙意味着什么? 如果你说你想要把20个而不是21个主要钥匙拿到来,那么我担心你会这样做。

你们可以做的是,减少主要制约因素,然后将21个因素改变为20个,并重新回到主要制约因素。

戴维在不使用主要钥匙进行指数化方面是正确的。

如果你一旦(我有时在移徙期间)不得不改变某个特定的主要价值,那么你当然可以确定身份认同,并用一个插头复制该行,然后删除原来的。

2. 如果在你的申请中重新设定某种顺序或作为指数的栏目,你可以采用以下储存的程序:

CREATE PROCEDURE [dbo].[OrganizeOrderConfirmationMessages] 
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @sortOrder INT;
    SET @sortOrder = 0;

    -- // Create temporary table
    CREATE TABLE #IDs(ID INT, SortOrder INT)

    -- // Insert IDs in order according to current SortOrder
    INSERT INTO #IDs SELECT ocm.ID, 0 FROM OrderConfirmationMessages ocm ORDER BY ocm.SortOrder ASC

    -- // Update SortOrders
    UPDATE #IDs SET SortOrder = @sortOrder, @sortOrder = @sortOrder + 10

    -- // Update the "real" values with data from #IDs
    UPDATE OrderConfirmationMessages SET SortOrder = x2.SortOrder
    FROM #IDs x2  WHERE OrderConfirmationMessages.ID = x2.ID    

END

成果:

SortOrders的例子将从1,2,5,7,10,24,36到10,20,30,40,50,60,70

你们应当放弃散射场,然后再造,把它作为首要点,检查自动加固检查箱,增加新的领域并填充数字。

首先从您的表格中删除了主要关键一栏,在您的Sphpmyadmin sql 部分管理着这个合成物。

ALTER TABLE  your_tablename  ADD  column_name  BIGINT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY
( column_name  (10));

这将自动从0、1等中安排该栏。

尝试:

SET @var:=0;
UPDATE `table` SET `id`=(@var:=@var+1);
ALTER TABLE `table` AUTO_INCREMENT=1; 

在邮局,在记录和记录数量方面,你可以这样做;300:

update schema.tbl1
set tbl_id = tbl_id + 300;

alter sequence schema.tbl1_id_seq
restart with 1;

insert into schema.tbl1
select nextval( schema.tbl1_id_seq ),
column2,
column3
from schema.tbl1;

delete from schema.tbl1
where tbl1_id > 300;




相关问题
Do link tables need a meaningless primary key field?

I am working on a couple of link tables and I got to thinking (Danger Will Robinson, Danger) what are the possible structures of a link table and what are their pro s and con s. I came up with a few ...

Identity Column as Primary Key

Could you please opine if having identity column as primary key is a good practise? For ORM tools, having identity column on tables helps. But there are other side effects such as accidental duplicate ...

如何重新排序主要关键?

我删除了我“表型”中的一行(第20段),请让我知道,如何调整目录(主要关键)? 当时为19岁之后的21岁。

What is MySQL primary (key1, key2)

I am working on existing DB and try to optimize it. I see a table without a single primary key but with two foreign keys work as a primary key. I know it will work. however, is it better to have one ...

How to reset the primary key of a table?

In my table tbphotos I had a 100 records. I then deleted all the records and now that I want to restart data entry I see that my primary key doesn t start from 1, but it starts from 101, Is there any ...

DataSet and Primary Key with multiple columns

How Can I use Find method in DataSet that has Primary Key make of 3 Columns? dadSample.SelectCommand = New SqlCommand("SELECT * FROM StockBalance", conxMain) dadSample.FillSchema(...

热门标签