2016-05-02 9 views
1

私はアプリケーションをMySQLからSQLServerに切り替えるアプリケーションです。SQLSERVER - テーブルID生成のプロシージャを定義する方法は?

今日私は、すべてのPOJOが使用する抽象クラスで定義されたカスタムID生成戦略を実装しています。これは動作しますが、私はアプリケーションを介してIDを生成することしかできません。

このデータベースの移行では、スキーマを作成した後、SELECT NEWID();クエリを返すプロシージャを使用するすべてのテーブルのすべての「id」列をどこか定義します。

これは可能ですか?どうやって?

+0

主なアイデアは – gtludwig

+1

アプリケーションを介して、挿入SQLスクリプトのいずれかを介してデータの挿入を可能にすることです私はあなたが[1つの以上の配列]たいと思います( https://msdn.microsoft.com/en-us/library/ff878091.aspx) –

答えて

0

私は、デフォルトの制約にID列を定義したい:

create table a 
(
    id 
    uniqueidentifier not null 
    constraint [a.id.default.newid] 
     default(newid()) 
    constraint [a.id.primarykey] 
     primary key clustered, 

    --> other columns... 
) 

この方法で、あなたはアプリが生成したIDを取るか、またはデータベースがニーズに応じて、それを割り当てさせることができます。プライマリキー制約(または一意制約)は、一意性を強制します。これは、アプリケーションから受信IDを許可する場合に重要です。

あなたは、必ずしも値を指定しない、IDを生成する必要がないスクリプトで

... ...と、デフォルトのキックインチあなたはnewid()を挿入することができ、あまりにも...

insert a 
select newid() 
from b 

...とSQL Serverは、行ごとにnewid()を呼び出すために知っているここ

+0

ありがとう、バディ!それがまさに私が必要としていたものです。私は、これを行うためにHibernateに指示する方法があるとは思わないでしょうか? – gtludwig

+1

@gtludwig、申し訳ありません。 – Clay

関連する問題