Una tabella di server sql può avere due colonne di id quadro?

Ho bisogno di avere una colonna come chiave primaria e un’altra per incrementare automaticamente un campo del numero dell’ordine. È ansible?

EDIT: Penso che userò solo un numero composito come numero d’ordine. Grazie comunque.

CREATE TABLE [dbo].[Foo]( [FooId] [int] IDENTITY(1,1) NOT NULL, [BarId] [int] IDENTITY(1,1) NOT NULL ) 

ritorna

 Msg 2744, Level 16, State 2, Line 1 Multiple identity columns specified for table 'Foo'. Only one identity column per table is allowed. 

Quindi, no, non puoi avere due colonne di id quadro. Ovviamente puoi fare in modo che la chiave primaria non aumenti automaticamente (id quadro).

Modifica: msdn: CREATE TABLE (Transact-SQL) e CREATE TABLE (SQL Server 2000) :

È ansible creare una sola colonna Identity per tabella.

È ansible utilizzare Sequenza per la seconda colonna con il valore predefinito SE si utilizza SQL Server 2012

 --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 

http://technet.microsoft.com/en-us/library/ff878058.aspx

Aggiungi una colonna Identity e quindi aggiungi una colonna calcasting la cui formula è il nome della colonna Identity

Ora entrambi aumenteranno allo stesso tempo

No, non è ansible avere più di una colonna Identity.

L’Enterprise Manager non ti consente nemmeno di impostare> 1 colonna come id quadro. Quando una seconda colonna diventa identity framework

Si noti inoltre che @@ identity restituisce l’ultimo valore di id quadro per la connessione aperta che non avrebbe senso se fosse ansible creare più di una colonna Identity per una tabella.

 create table #tblStudent ( ID int primary key identity(1,1), Number UNIQUEIDENTIFIER DEFAULT NEWID(), Name nvarchar(50) ) 

Due colonne Identity non sono possibili ma se si accetta di utilizzare una colonna identificatore univoco, allora questo codice fa lo stesso lavoro. Inoltre, è necessaria una colonna aggiuntiva – Colonna nome – per l’inserimento dei valori.

Esempio di utilizzo:

 insert into #tblStudent(Name) values('Ali') select * from #tblStudent 

Ps: la funzione NewID () crea un valore univoco di tipo uniqueidentifier.

La chiave primaria non ha bisogno di essere una colonna di id quadro.

Non puoi avere due colonne Identity.

Potresti ottenere qualcosa di simile a quello che vuoi con un grilletto …

in SQL Server non è ansible avere più di una colonna come identity framework.

Ho appena creato un codice che ti consentirà di inserire due identity framework sulla stessa tabella. fammelo condividere con te nel caso in cui aiuti:

 create trigger UpdateSecondTableIdentity On TableName For INSERT as update TableName set SecondIdentityColumn = [email protected]@IDENTITY where ForstId = @@IDENTITY; 

Grazie,

Una soluzione alternativa sarebbe creare un trigger INSERT che incrementi un contatore.

Quindi ho una tabella con un’id quadro col: applicationstatusid. è anche la chiave primaria. Voglio incrementare automaticamente un altro campo: numero di applicazione

Quindi questo è l’innesco che scrivo.

  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