Estoy usando SQL Server 2008 y una clave principal de una tabla de base de datos que estoy usando no es una columna IDENTITY
(no estoy seguro por qué). Necesito cambiar eso.Cómo agrego auto_increment a una columna en SQL Server 2008
Estoy en SQL Server Management Studio en la vista de diseño, bajo las propiedades de columna y por alguna razón no puedo cambiar las especificaciones de identidad a Yes
.
Hay algo que me falta ... Soy nuevo en SQL Server: ¿alguna idea sobre lo que me falta?
Aquí es el crear la tabla
CREATE TABLE [dbo].[AR_Transactions](
[Trans_ID] [bigint] NOT NULL,
[DateTime] [datetime] NOT NULL,
[Cashier_ID] [nvarchar](50) NULL,
[CustNum] [nvarchar](12) NOT NULL,
[Trans_Type] [nvarchar](2) NOT NULL,
[Prev_Cust_Balance] [money] NULL,
[Prev_Inv_Balance] [money] NULL,
[Trans_Amount] [money] NOT NULL,
[Payment_Method] [nvarchar](4) NULL,
[Payment_Info] [nvarchar](20) NULL,
[Description] [nvarchar](38) NULL,
[Invoice_Number] [bigint] NOT NULL,
[Store_ID] [nvarchar](10) NOT NULL,
[Dirty] [bit] NOT NULL,
[Station_ID] [nvarchar](5) NULL,
[Payment_Type] [smallint] NULL,
CONSTRAINT [pkAR_Transactions]
PRIMARY KEY CLUSTERED([Store_ID] ASC, [Trans_ID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[AR_Transactions]
ADD CONSTRAINT [DF_AR_Transactions_Trans_ID_AR_Transactions]
DEFAULT ((0)) FOR [Trans_ID]
ALTER TABLE [dbo].[AR_Transactions]
ADD CONSTRAINT [DF_AR_Transactions_Invoice_Number_AR_Transactions]
DEFAULT ((0)) FOR [Invoice_Number]
Ésta es la consulta que se necesita para ejecutar su ... un corte completo a tratar de incremento automático mis inserciones mismo
BEGIN TRANSACTION
INSERT INTO
[cresql].[dbo].[AR_Transactions](Trans_ID, DateTime , Dirty, Store_ID, Trans_Type,
Cashier_ID, CustNum, Trans_Amount, Prev_Cust_Balance)
SELECT
(SELECT MAX(Trans_ID) + 1 FROM [cresql].[dbo].[AR_Transactions]),
DATEADD(MINUTE, -30, Getdate()), 1, 1001, 'C', 100199, CustNum,
-Acct_Balance, Acct_Balance
FROM [cresql].[dbo].[Customer]
WHERE Acct_Balance <> 0
UPDATE [cresql].[dbo].[Customer]
SET Acct_Balance = 0
WHERE Acct_Balance <> 0
COMMIT TRANSACTION
¿Qué quiere decir con que no se puede cambiar. ¿Te da un error? ¿Está gris? –
Este es el problema de si la identidad está en gris a no y no puedo cambiarlo – Trace
En una nota al margen: nunca * llamaría * a una columna algo así como '[DateTime]' ..... y también recomendaría * no * haciendo columnas de longitud inferior a 5 'varchar' o' nvarchar' - la sobrecarga de 2 bytes te está matando. Si la columna tiene 5 caracteres o menos, hágalo 'CHAR (x)' o 'NCHAR (x)'. Y estoy seguro de que su método actual de aumentar el 'Trans_ID' no es seguro en un entorno ocupado y tarde o temprano llevará a valores' Trans_ID' duplicados .... –