Objectivo: criar a partir de uma instrução SQL parametrizada para a eliminação de dados numa tabela.
Ferramentas: SQL Server Management Objects (SMO)
Principais objectos e propriedades: Table, Table.Columns, Column, Column.Identity, Column.InPrimaryKey
Notas:
- chave primária não composta
- a tabela inclui sempre uma coluna do tipo Timestamp que deve ser devolvido e que se chama lastUpdated
- a actualização só pode ocorrer se tiver o último timestamp
- deve ser devolvido o número de linhas afectadas pela operação de Delete
- as colunas CreatedOn, CreatedBy, lastUpdatedOn, lastUpdatedBy existem sempre
Exemplo do resultado pretendido
Dim sql As String = "DELETE FROM {0}TM_Parametros WHERE Id = @Id AND lastUpdated = @lastUpdated" & ControlChars.CrLf & _
"SELECT @updatedRows = @@ROWCOUNT;"
Código
sb.AppendFormat(" Dim sql As String = \"DELETE FROM {{0}}{0} WHERE ", table.Name);
foreach(Column c in table.Columns)
{
if (c.InPrimaryKey)
{
sb.AppendFormat("{0} = @{0} AND ", UpperCaseFirstCharacter(c.Name));
}
}
sb.AppendLine(" lastUpdated = @lastUpdated\" & ControlChars.CrLf & _ ");
sb.AppendLine(" \"SELECT @updatedRows = @@ROWCOUNT;\"");
Deixe um comentário