SQL 自動編號 |
尚未結案
|
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
想請教各位先進,我原先的資料庫是微軟的ACCESS 2000,由於筆數已超過20,000多筆,所以將資料庫匯入微軟的SQL Server,問題在於原先的資料庫,有一個欄位A0,資料類型是「自動編號」,但轉到SQL Server後返而不知如何設計該欄位,雖然大人回答如下: MS SQL 是使用 identity 的欄位屬性, 可以用在 int, smallint 資料型態上.
請自行試試, 下面的 table 中的 id_num 就是會自動編號的一個欄位. CREATE TABLE new_employees( id_num int IDENTITY(1,1), fname varchar (20), minit char(1), lname varchar(30)) 但試了好幾天,仍然摸不著頭緒,不知是否有人遇到相同的問題,是否能指導該怎麼做,謝謝各位先進。 我的資料庫 ccpm
資料表 pm3d
擬自動編號的欄位為 A0 是否能依據我的資料庫,指導我該如何,將現成資料庫之A0單位,在DELPHI裡變有自動編號的功能?感謝再感謝。
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
在 MS SQL 中, 對應於 access 資料表中的自動編號欄位, 就是將 MS SQL 資料表中的欄位設為 identity 屬性即可, 請問有什麼設定上的困難嗎? 建立你的資料表的方式為:
create table pm3d ( A0 int IDENTITY(1,1), A1 char(5), ..... )這樣就可以了. 若是已經匯入 ms sql 資料庫的話, 可以使用 Enterprise Manager 來進行修改欄位的屬性, 將 A0 該欄位的[識別] 設定為 [是] 即可, 若是要用下 sql command 的方式比較麻煩, 無法使用 alter table table_name alter column 的方式, 必須新增一個 temp table 後, 配合 啟動識別插入 的功能來進行, 將原資料寫入 temp table 後, drop 原 table 完成後再將 temp table 改名為原來的 table 名, 記得要使用 transaction 以免修改失敗, 詳細 command 如下: BEGIN TRANSACTION CREATE TABLE dbo.Tmp_pm3d ( A0 int NOT NULL IDENTITY (1, 1), A1 char(5) NULL ) ON [PRIMARY] SET IDENTITY_INSERT dbo.Tmp_pm3d ON IF EXISTS(SELECT * FROM dbo.pm3d) EXEC('INSERT INTO dbo.Tmp_pm3d (A0, A1) SELECT A0, A1 FROM dbo.pm3d TABLOCKX') SET IDENTITY_INSERT dbo.Tmp_pm3d OFF DROP TABLE dbo.pm3d EXEC sp_rename 'dbo.Tmp_pm3d', 'pm3d' COMMIT PRINT '作業成功' |
jawtair
一般會員 發表:30 回覆:92 積分:24 註冊:2003-04-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |