Partilhar via


Especificar valores padrão para colunas

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Base de dados SQL no Microsoft Fabric

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

Se você não atribuir um valor padrão à 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é fornecer um valor para a coluna.

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

  • Defina o valor da linha para 1 numa coluna "ativa" ou "habilitada" durante a inserção.
  • Defina o valor da linha de um campo de data para a data atual.
  • Defina o valor da linha de um campo para uma função determinística do sistema, por exemplo, DB_NAME().

Limitations

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

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

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

  • Para inserir um padrão numérico, insira o número sem aspas ao redor.

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

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

Permissions

As ações descritas neste artigo exigem 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, execute as seguintes 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 colunas para as quais você deseja alterar a escala e selecione Design.

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

  4. Na guia Propriedades da Coluna, insira o novo valor padrão na propriedade Valor Padrão ou Vinculaçã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 dentro de aspas simples.

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

Use Transact-SQL para especificar um padrão

Há várias maneiras de especificar um valor padrão para uma coluna usando T-SQL. Em cada um dos exemplos a seguir, você pode abrir uma nova consulta de 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 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 onde os objetos de banco de dados forem 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

Utilize 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 de criação

O exemplo a seguir usa a função de 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 o uso de um gatilho , uma tabela temporal , uma coluna calculada ou uma string binária de rowversion . Considere também inserir linhas executando procedimentos armazenados em vez de inserir linhas diretamente, onde os procedimentos armazenados podem impor lógica de negócios, valores padrão e outras regras de consistência de dados.

Para detetar linhas que mudam, considere captura de dados de alteração (CDC), rastreamento de alterações, uma tabela temporal ou uma tabela razão geral.