hola:
Utilizando Micro SQL Server 2000 yo utilizaba el siguiente procedimiento almacenado:
Código SQL
[-]
CREATE PROCEDURE [dbo].[Insert_Customer]
(@saledate datetime, @usuario int, @referencia int OUTPUT, @id int OUTPUT)
AS SELECT @referencia = MAX(referencia) FROM Customer
IF @referencia IS NULL SET @referencia = 1
ELSE SET @referencia = @referencia + 1
INSERT INTO Customer (saledate, usuario, referencia)
VALUES (@saledate, @usuario, @referencia)
SELECT @id = @@IDENTITY
Para cuando fuera a insertar un registro garantizar un id en caso de colisión con otro usuario y posteriormente guardaba el resto de los campos con el id que ya tenia asignado.
Ahora estoy tratando de hacer esto desde una Query usando Delphi 7 y Unidac pero no lo he logrado aun.
Alguna sugerencia de como resolver esto.
Saludos
Luis Garcia