主キーとして 1 つの列が必要で、注文番号フィールドを自動インクリメントするには別の列が必要です。これは可能ですか?
編集:注文番号として合成番号を使用すると思います。とにかく、ありがとう。
主キーとして 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 番目の列に Sequence を使用できます
--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)
)
ID 列を 2 つ使用することはできませんが、一意の ID 列を使用することを受け入れる場合、このコードも同じように機能します。また、値を挿入するための追加の列 (名前列) も必要です。
使用例:
insert into #tblStudent(Name) values('Ali')
select * from #tblStudent
Ps: NewID()関数は、uniqueidentifier 型の一意の値を作成します。
主キーは ID 列である必要はありません。
2 つの ID 列を持つことはできません。
トリガーを使用して、必要なものに近いものを取得できます...
SQL Server では、ID として複数の列を持つことはできません。
回避策は、カウンターをインクリメントする INSERT トリガーを作成することです。
したがって、1 つの ID 列 (applicationstatusid) を持つテーブルがあります。それも主キーです。別の col: applicationnumber を自動インクリメントしたい
これが私が書くトリガーです。
create trigger [applicationstatus_insert] on [ApplicationStatus] after insert as
update [Applicationstatus]
set [Applicationstatus].applicationnumber =(applicationstatusid+ 4000000)
from [Applicationstatus]
inner join inserted on [applicationstatus].applicationstatusid = inserted.applicationstatusid