首頁 > 資料庫 > mysql教程 > 如何為現有資料庫表新增識別列?

如何為現有資料庫表新增識別列?

Barbara Streisand
發布: 2025-01-22 23:20:13
原創
411 人瀏覽過

How Can I Add an Identity Column to an Existing Database Table?

修改現有資料表以包含識別列

許多資料庫任務需要在現有資料表中新增識別列。 一個常見的問題是是否修改現有列或建立新列。

為什麼無法直接轉換

直接將現有列轉換為識別列是不可行的。 標識列從定義的種子值開始產生順序值。 修改現有資料列會破壞資料完整性。

新增身分列的策略

新增識別列有兩種主要方法:

1。 建立帶有身分的新表

這涉及:

  • 產生一個腳本,將資料從原始表傳輸到新表,其中包括識別列。
  • 刪除原來的表。
  • 重新命名新表以符合原始表的名稱。
  • 此方法保留原始資料值(儘管它們可能不是連續的)。

2。新增的身份列

此方法包括:

  • 新增具有識別屬性的新欄位。
  • 刪除原始列(或將資料移轉到新列)。
  • 重新命名新列以符合原始列的名稱。
  • 此方法保留識別列中的原始資料值;識別列將產生新的順序值。

示例性 SQL 查詢

方法一:新建表

<code class="language-sql">CREATE TABLE New_Table (
    Id INT NOT NULL IDENTITY(1, 1),
    Name VARCHAR(50) NULL
);

INSERT INTO New_Table (Id, Name)
SELECT Id, Name
FROM Original_Table;

DROP TABLE Original_Table;

EXEC sp_rename 'New_Table', 'Original_Table';</code>
登入後複製

方法2:新增欄位

<code class="language-sql">ALTER TABLE Original_Table
ADD Id_new INT IDENTITY(1, 1);

ALTER TABLE Original_Table
DROP COLUMN Id;

EXEC sp_rename 'Original_Table.Id_new', 'Id', 'COLUMN';</code>
登入後複製

重要注意事項

  • 建立帶有識別列的新表時,請使用NOT NULL約束。 在插入資料之前將 IDENTITY_INSERT 設定為 ON 以維護現有值(如果需要)。
  • 識別列將自動產生連續數字,替換列中任何預先存在的值。

以上是如何為現有資料庫表新增識別列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板