1つの列を主キーとして、別の列を注文番号フィールドを自動インクリメントする必要があります。これは可能ですか?
編集:私は注文番号として複合番号を使用すると思います。とにかく、ありがとう。
CREATE TABLE [dbo].[Foo](
[FooId] [int] IDENTITY(1,1) NOT NULL,
[BarId] [int] IDENTITY(1,1) NOT NULL
)
戻り値
Msg 2744, Level 16, State 2, Line 1
Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed.
したがって、いいえ、2つのID列を含めることはできません。もちろん、主キーを自動インクリメント(ID)にすることはできません。
編集: msdn:CREATE TABLE(Transact-SQL) および CREATE TABLE(SQL Server 2000) :
テーブルごとに作成できるID列は1つだけです。
SQL Server 2012を使用している場合、2番目の列のシーケンスをデフォルト値で使用できます
--Create the Test schema
CREATE SCHEMA Test ;
GO
-- Create a sequence
CREATE SEQUENCE Test.SORT_ID_seq
START WITH 1
INCREMENT BY 1 ;
GO
-- Create a table
CREATE TABLE Test.Foo
(PK_ID int IDENTITY (1,1) PRIMARY KEY,
SORT_ID int not null DEFAULT (NEXT VALUE FOR Test.SORT_ID_seq));
GO
INSERT INTO Test.Foo VALUES ( DEFAULT )
INSERT INTO Test.Foo VALUES ( DEFAULT )
INSERT INTO Test.Foo VALUES ( DEFAULT )
SELECT * FROM Test.Foo
-- Cleanup
--DROP TABLE Test.Foo
--DROP SEQUENCE Test.SORT_ID_seq
--DROP SCHEMA Test
ID列を1つ追加してから、式がID列の名前である計算列を追加します。
これで両方が同時に増加します
いいえ、複数のID列を含めることはできません。
Enterprise Managerでは、1列以上をIDとして設定することもできません。 2番目の列がIDになったとき
また、@@ identityは開いている接続の最後のID値を返すことに注意してください。これは、テーブルで複数のID列が可能である場合は意味がありません。
create table #tblStudent
(
ID int primary key identity(1,1),
Number UNIQUEIDENTIFIER DEFAULT NEWID(),
Name nvarchar(50)
)
2つのID列は使用できませんが、一意のID列を使用することに同意した場合、このコードは同じ働きをします。また、値を挿入するための追加の列-Name column-も必要です。
使用例:
insert into #tblStudent(Name) values('ALi')
select * from #tblStudent
Ps: NewID() 関数はタイプuniqueidentifierの一意の値を作成します。
主キーはID列である必要はありません。
2つのID列を含めることはできません。
あなたはトリガーであなたが望むものに近いものを得ることができます...
同じテーブルに2つのIDを挿入できるコードを作成しました。それが役立つ場合に備えて、あなたとそれを共有しましょう:
create trigger UpdateSecondTableIdentity
On TableName For INSERT
as
update TableName
set SecondIdentityColumn = 1000000+@@IDENTITY
where ForstId = @@IDENTITY;
おかげで、
sQLサーバーでは、IDとして複数の列を持つことはできません。