sql >> Database >  >> RDS >> Sqlserver

Identiteitskolom in een tabelwaardeparameter in procedure, hoe DataTable te definiëren

Ik had hetzelfde probleem waarbij we een identiteit op het type willen, maar geen waarde willen opgeven. De sleutel is om een ​​SqlMetaData . te gebruiken constructor voor die kolom die useServerDefault instelt naar true :

Volgens dit artikel op gebruikmakend van door de gebruiker gedefinieerd tabeltype met identificatiekolom in ado net door Tim Van Wassenhove

SQL :

CREATE TYPE [Star].[example] AS TABLE(  
  [Ordinal] [int] IDENTITY(1,1) NOT NULL,  
  [Name] [nvarchar](200) NOT NULL,
)

C# :

var sqlMetaData = new[] 
{  
  new SqlMetaData("Ordinal", SqlDbType.Int, true, false, SortOrder.Unspecified, -1),   
  new SqlMetaData("Name", SqlDbType.NVarChar, 200)
};

sqlRecords = new HashSet<SqlDataRecord>(usersToInclude.Select(user =>
{   
  var record = new SqlDataRecord(sqlMetaData);   
  record.SetString(1, user.Name);   
  return record; 
}));

new SqlMetaData("IdentityField", SqlDbType.Int, true, false, SortOrder.Unspecified, -1)


  1. verwijder speciale tekens in php

  2. Kan de waarde voor automatisch verhogen van de opslagengine niet lezen, foutnummer:1467

  3. Voer PostgreSQL-query's uit vanaf de opdrachtregel

  4. Som tot drempelwaarde bereikt en reset vervolgens de teller