7

SQL Server の自動インクリメント列は自動的に入力されます。トリガーを使用せずに、挿入時に UniqueIdentifier 列を自動生成するように定義することは可能ですか?

これは、テーブルのセカンダリ ユニーク キーになります。クエリ文字列内で使用できる公開主キーが必要なため、作成する必要があります。

従来のインフラストラクチャは、依然として古い int 主キーに依存しています。古いインフラストラクチャが最初にレコードを作成することを考えると、可能であれば、SQL Server が挿入時にセカンダリ GUID キーを透過的に作成することを望みます。

どうもありがとう

4

2 に答える 2

13

NEWID() のデフォルト値を持つ Uniqueidentifier タイプの列を使用できます

于 2012-07-20T09:35:45.400 に答える
3

デフォルトのNEWID()でテーブルに列を追加し、既存の行を更新して新しいIDも持つ場合。あなたは

--  Create test table
CREATE TABLE Test1
(
ID int IDENTITY(1,1)
,Txt char(1)
);

-- Insert data
INSERT INTO Test1(Txt)
SELECT 'a' UNION ALL
SELECT 'b' UNION ALL
SELECT 'c' UNION ALL
SELECT 'd' UNION ALL
SELECT 'e';

-- Add column
ALTER TABLE Test1
ADD GlobalID uniqueidentifier DEFAULT(NEWID());

-- View table, default value not added for existing rows
SELECT *
FROM Test1;

-- Update null ids with guids
UPDATE Test1
SET GlobalID = NEWID()
WHERE GlobalID IS NULL

-- Insert new data
INSERT INTO Test1(Txt)
SELECT 'f' UNION ALL
SELECT 'g' UNION ALL
SELECT 'h' UNION ALL
SELECT 'i' UNION ALL
SELECT 'j';

-- View table
SELECT *
FROM Test1;

-- Drop table
DROP TABLE Test1
于 2012-07-20T09:53:32.413 に答える