3

SQL Server を使い始めたばかりで、 type の列を持つテーブルに値を追加する際に問題が発生しましたuniqueidentifier

テーブルは次のもので構成されます。

ID (uniqueidentifier), CODE (nchar(5)), COUNTRY_CODE(nchar(2)), NAME(nchar30)  

ExcelおよびCSVファイルから値を追加してみましたが、基本的には次のようになります。

DEBE,DE,Berlin

ロードできませんでした。この ID フィールドには常にいくつかのエラーがあります。

次のように手動で値を追加しようとすると:

INSERT INTO [Portfolio].[dbo].[Regions](CODE, COUNTRY_CODE, NAME) 
VALUES ('DEBE', 'DE', 'Berlin');

それは言います:

値 NULL を列 'ID'、テーブル 'Portfolio.dbo.Regions' に挿入できません。列はヌルを許可しません。INSERT は失敗します。

もちろん、id列と数値を追加すると、 int は と互換性がないという情報が得られuniqueidentifierます。

一時テーブルを作成して(の代わりにidas を使用して)、そこから値をコピーしようとしました(列なしで、自動的に生成されるはずです)INTuniqueidentifierID

私が考えることができる唯一のことは、ID列が自動的に値を作成していないことであり、これを解決する方法がわかりません。誰でも助けることができますか?

4

4 に答える 4

4

Uniqueidentifier は、GUID の生成に使用できる特別な型です。長さは 16 バイトで、Identity 列として自動的に増分されません。varchar から正しい uniqueidentifier を取得するには、Convert または Cast 句を使用する必要があります。16 バイトを超えると切り捨てられます。

NewID() を使用して、新しい uniqueidentifier を生成します。

多分このリンクはあなたを助けることができます

于 2012-07-05T14:42:38.013 に答える
3

上記のように、NewID()を使用して識別子を作成します。

テーブルのデザインモードでは、NewID()を「デフォルト値またはバインディング」スロットに配置できます。これは、テーブルに挿入する新しいレコード(CODE、COUNTRY_CODE、NAMEなど)に対して、一意の識別子が作成されることを意味します。

于 2012-07-05T15:11:37.357 に答える
0

あなたが探しているのは Identity フィールドです。UniqueIdentifier フィールドは、GUID の格納に使用されます。

フィールド タイプを int に変更し、ID 仕様を「はい」に変更します。

もう 1 つの解決策は、ID フィールドに独自の GUID をコードから渡すことです。

于 2012-07-05T14:39:20.327 に答える