[T-SQL] 變更一個允許 Null 的欄位為 PK 欄位

今天從 Access 匯入一個 500 MB 左右的資料到 SQL Server Express 2008 R2,電腦是比較慢的 CPU,所以匯入後發現欄位要改為 PK 值時,就打算用 SQL Server Management Studio 的人機介面去編輯~

每次編輯完存檔時,都因為跑過久逾時而被拒絕,查了一下 SQL Server Management Studio 自動建立的 SQL 語法,居然是建立一個新表格,匯入所有資料後,刪除原表格,新表格更名…

回家查了一下線上手冊,用下面語法,就不用牽扯到資料重新匯入:

USE databasename
Go
ALTER TABLE [tablename]
    ALTER COLUMN [columnname] datatype NOT NULL;
Go
ALTER TABLE [tablename]
    ADD CONSTRAINT [columnname_pk] PRIMARY KEY ([columnname]);

大概在 20 秒左右跑完~

文中:

databasename: 資料庫名

tablename: 表格名

columnname: 欄名

columnname_pk: PK 索引名,一般慣用 欄名_PK ,也可以隨意取名,但不能跟其他索引同名。

要注意的是中間要用 Go 先執行,因為沒先轉換為不允許 Null 的話,就不允許加入 PK 索引,所以必須分成兩句才能順利完成。當然分兩句不想用 Go 就是分兩次查詢執行就可以了。

常常需要利用 Access 快速匯入、匯出,就自己留一份,以後參查比較快。

廣告
Categories: 自用整理, 資料庫, 工作點滴 | 發表留言

文章分頁導航

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: