Compartilhar via


Especificar valores padrão para colunas

aplica-se a: SQL Server 2016 (13.x) e posterior Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)banco de dados SQL no Microsoft Fabric

Você pode usar o SQL Server Management Studio (SSMS) para especificar um valor padrão que será inserido na coluna da tabela. Você pode definir um padrão usando o Pesquisador de Objetos ou executando o Transact-SQL.

Se você não atribuir um valor padrão para a coluna e o usuário deixar a coluna em branco, então:

  • Se você definir a opção para permitir valores nulos, NULL será inserido na coluna.

  • Se você não definir a opção para permitir valores nulos, a coluna permanecerá em branco, mas o usuário ou o aplicativo não poderá inserir a linha até que seja fornecido um valor para a coluna.

Você pode usar uma restrição padrão para várias tarefas a fim de garantir a consistência de dados no banco de dados:

  • Defina o valor da linha para uma coluna “ativa” ou “habilitar” como 1 após a inserção.
  • Defina o valor da linha de um campo de data como a data atual.
  • Defina o valor da linha de um campo como uma função determinística do sistema, por exemplo, DB_NAME().

Limitações

Antes de começar, esteja ciente das seguintes limitações e restrições:

  • Se sua entrada no campo Valor Padrão substituir um padrão associado (exibido sem parênteses), será solicitado que você desvincule o padrão e substitua-o pelo novo padrão.

  • Para inserir uma cadeia de caracteres de texto, coloque o valor entre aspas simples ('). Não use aspas duplas ("), pois elas são reservadas para identificadores entre aspas.

  • Para inserir um padrão numérico, insira o número sem colocá-lo entre aspas.

  • Para inserir um objeto/função, digite o nome do objeto/função sem aspas.

  • No Azure Synapse Analytics, somente constantes podem ser usadas em uma restrição padrão. Uma expressão não pode ser usada com uma restrição padrão.

Permissões

As ações descritas neste artigo exigem a permissão ALTER na tabela.

Usar o SQL Server Management Studio para especificar um padrão

Você pode usar o Pesquisador de Objetos no SSMS para especificar um valor padrão para uma coluna de tabela. Para fazer isso, siga estas etapas:

  1. Conecte-se à sua instância do SQL Server no SSMS.

  2. No Pesquisador de Objetos, clique com o botão direito do mouse na tabela com as colunas cuja escala você deseja alterar e selecione Design.

  3. Selecione a coluna para a qual você deseja especificar o valor padrão.

  4. Na guia Propriedades da Coluna , insira o novo valor padrão na propriedade Valor ou Associação Padrão .

    Para inserir um valor numérico padrão, insira o número. Para um objeto ou função insira seu nome. Para um padrão alfanumérico insira o valor entre aspas simples.

  5. No menu Arquivo, selecione Salvar <nome da tabela>.

Usar o Transact-SQL para especificar um padrão

Há várias maneiras de especificar um valor padrão para uma coluna usando o T-SQL. Em cada um dos exemplos a seguir, você pode abrir uma nova consulta Transact-SQL com estas etapas.

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, selecione Nova Consulta.

  3. Copie e cole o exemplo a seguir na janela de consulta e selecione Executar.

Usar uma restrição nomeada

Ao trabalhar com projetos de banco de dados, recomendamos criar restrições com nomes. Caso contrário, a restrição padrão receberá um nome gerado pelo sistema, que será diferente em cada ambiente do SQL Server em que os objetos de banco de dados são criados.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

Usar ALTER TABLE

Você pode adicionar uma restrição nomeada a uma tabela existente com ALTER TABLE.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT
); -- Allows nulls.
GO

INSERT INTO dbo.doc_exz (column_a)
VALUES (7);
GO

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50 FOR column_b;
GO

Usar CREATE TABLE

Crie uma tabela com restrições padrão usando CREATE TABLE.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

Definir uma data de criação

O exemplo a seguir usa a função do sistema sysdatetimeoffset() para preencher o valor da linha da coluna dateinserted com a data em que a linha foi criada.

CREATE TABLE dbo.test (
    id INT identity(1, 1) NOT NULL CONSTRAINT PK_test PRIMARY KEY
    ,date_inserted DATETIMEOFFSET(2) NOT NULL CONSTRAINT DF_test_date_inserted DEFAULT(sysdatetimeoffset())
);

Uma restrição padrão não é alterada quando a linha é atualizada. Para atualizar um valor sempre que a linha for modificada, considere usar um gatilho, uma tabela temporal, uma coluna computada ou uma cadeia de caracteres binária rowversion. Considere também a possibilidade de inserir linhas executando procedimentos armazenados em vez de inserir linhas diretamente, nos casos em que os procedimentos armazenados possam impor uma lógica de negócios, valores padrão e outras regras de consistência de dados.

Para detectar linhas que mudam, considere CDA (captura de dados de alterações), Controle de alterações, tabela temporal ou tabela do Razão.