Compartilhar via


Especificar valores padrão para colunas

Aplica-se a:SQL Server 2016 (13.x) e versões posteriores Banco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)

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 aplicativo não poderá inserir a linha até que forneça um valor para a coluna.

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

  • Defina o valor da linha para uma coluna "ativa" ou "habilitada" 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, é recomendável 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 seus 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

Você pode criar uma nova tabela com restrições padrão com CREATE TABLE.

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

Definir uma data criada

O exemplo a seguir usa a função sysdatetimeoffset() sistema 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 inserir linhas executando procedimentos armazenados em vez de inserir linhas diretamente, em que os procedimentos armazenados podem impor 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.