valor ultimo tipo restricciones restriccion recuperar obtener insertado ejemplos dato check sql sql-server identity-column

ultimo - select @@ identity sql server



¿Puede una tabla de servidor sql tener dos columnas de identidad? (9)

La clave principal no necesita ser una columna de identidad.

No puedes tener dos columnas de identidad.

Podrías obtener algo parecido a lo que quieres con un gatillo ...

Necesito tener una columna como clave principal y otra para auto incrementar un campo de número de orden. es posible?

EDITAR: Creo que usaré un número compuesto como número de orden. Gracias de todos modos.


en el servidor sql no es posible tener más de una columna como identidad.


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

devoluciones

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

Entonces, no, no puedes tener dos columnas de identidad. Por supuesto, puede hacer que la clave principal no aumente automáticamente (identidad).

Edición: msdn: CREATE TABLE (Transact-SQL) y CREATE TABLE (SQL Server 2000) :

Solo se puede crear una columna de identidad por tabla.


No, no es posible tener más de una columna de identidad.

Enterprise Manager ni siquiera le permite configurar> 1 columna como identidad. Cuando se hace una segunda columna de identidad

También tenga en cuenta que @@ identity devuelve el último valor de identidad para la conexión abierta que no tendría sentido si más de una columna de identidad fuera posible para una tabla.


Agregue una columna de identidad y luego agregue una columna calculada cuya fórmula es el nombre de la columna de identidad

Ahora ambos aumentarán al mismo tiempo


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

No es posible una columna de identidad pero si acepta usar una columna de identificador único, este código también realiza el mismo trabajo. Y también necesita una columna adicional - Columna de nombre - para insertar valores.

Ejemplo de uso:

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

La función Ps: NewID () crea un valor único de type uniqueidentifier.


Acabo de crear un código que le permitirá insertar dos identidades en la misma tabla. déjame compartirlo contigo en caso de que te ayude:

create trigger UpdateSecondTableIdentity On TableName For INSERT as update TableName set SecondIdentityColumn = 1000000+@@IDENTITY where ForstId = @@IDENTITY;

Gracias,


Puede usar Sequence para la segunda columna con valor predeterminado SI usa 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


Una solución alternativa sería crear un desencadenador INSERT que incremente un contador.

Así que tengo una tabla que tiene una col de identidad: applicationstatusid. también es la clave principal. Quiero aumentar automáticamente otro col: número de aplicación

Entonces este es el disparador que escribo.

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