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