@Phil: ¿No quiere decir que su mesa tiene dos (2) columnas, la columna de PK autoincremental y una columna ADMINNAME? Si solo tiene una columna donde va AdminName, el AdminName es el PK y usted no puede autoincrementar una cadena, por supuesto. ¿Las reglas comerciales esperan que usted haga de un nombre de usuario de Windows totalmente calificado la clave principal? Eso sería viable y tendría sentido, porque entonces no necesitaría un índice único alternativo en la columna AdminName.
Pero si la tabla tiene dos columnas, no uno:
En SQL Server el incremento automático es parte de la definición de la tabla/columna. Usted define la columna como un número entero y luego también la convierte en una columna de identidad , especificando el incremento, generalmente 1, pero podría ser 2 o 5 o 10 o lo que sea. Para insertar una fila, sólo tiene que insertar la otra columna (s) valor (s) y no hace nada con la columna de PK:
insert into T
(foo) -- column(s) list
values('bar') -- values list
Su procedimiento almacenado que realiza la inserción puede hacer SCOPE_IDENTITY un valor de retorno o SCOPE_IDENTITY puede ser pasó de nuevo al cliente como un parámetro OUT.
P.S.SCOPE_IDENTITY() devuelve el valor de identidad autoincrementado generado más recientemente en el alcance actual; no genera el siguiente valor de identidad.
EDIT:
Presumiblemente, su mesa Administradores contiene un conjunto de administradores. Pero si no tiene columnas que no sean la columna de clave principal entera, no hay forma de identificar a los administradores; lo único que puedes hacer es distinguirlos entre sí. Eso no te lleva muy lejos en absoluto. Pero si la tabla administrador tenía una de las siguientes estructuras:
ID INTEGER PRIMARY KEY AUTOINCREMENT
windowsusername varchar(50) (unique index)
O
windowsusername varchar(50) primary key
que sería capaz de hacer referencia a la tabla del administrador de otras tablas, y las claves externas sería significativo. Y eso es precisamente lo que carece una tabla que consta de una sola columna entera, es decir.
Tener dos columnas, entonces podría tener un procedimiento almacenado hacer esto:
insert into Administrators
(windowsusername)
values('mydomain\someusername');
return SCOPE_IDENTITY();
y su cliente-programa que volver como un valor de retorno de la Identificación del autoincremented que había sido generada automáticamente y asignado a la recién insertado fila. Este enfoque es la práctica habitual, e incluso llegaría a decir que se considera una "mejor práctica".
P.S. Menciona que no sabía cómo "insertar un valor" si "no tenía nada que insertar". Hay una contradicción allí. Si no tiene nada para insertar, ¿por qué insertar? ¿Por qué crearía, por ejemplo, un nuevo registro de CLIENTE si no sabe absolutamente nada sobre el cliente? No su nombre, su ciudad, su número de teléfono, ¿nada?
Para aclarar: su pregunta es "¿cómo insertar filas en una tabla de SQL Server con una sola columna de IDENTIDAD"? – gbn
Sí, tiene razón, gracias por aclarar – Phil
Para las personas que aterricen aquí, esto se ha preguntado antes y la respuesta correcta está aquí: http: // stackoverflow.com/questions/850327/how-to-insert-into-a-table-with-just-one-identity-column – BJury