SQL Server - 默认值

问题描述 投票:1回答:2

我不知道这是否可行,但我想知道当我们创建一个字段具有默认值的表时,我们可以使此默认值获取行插入时另一列的值。

Create Table Countries (
    ID Int Not Null Identity(1,1),
    CountryCode Char (2) Not Null,
    Country Varchar (50) Not Null,
    CountryRegion Varchar (50) Null Default ('Country'),
    Nationality Varchar (75) Not Null Default ('Not Known'),
    InsertDate Datetime2 Not Null Default Getdate(),
        Constraint PK_CountryCode Primary Key (CountryCode));

在CountryRegion字段中,我可以放置一个('Unknown')默认值,但是就像我说的那样,默认情况下,如果没有放置任何内容,该字段是否可以获得插入Country字段的值?

sql sql-server default-value
2个回答
1
投票

使用触发器可以 - 在插入后立即更新列

CREATE TRIGGER CountriesTrigger ON Countries AFTER INSERT        
AS
BEGIN

  SET NOCOUNT ON

  UPDATE Countries
  SET
    Countries.CountryRegion = inserted.Country
  FROM Countries, inserted
  WHERE Countries.ID = inserted.ID 
        AND inserted.CountryRegion is null

END

0
投票

我认为在TABLE级别执行此操作并不容易。有一些解决方法可以做到这一点:1。如果您正在使用存储过程,那么您可以在那里编写逻辑。触发器也是一种选择,但在执行方面是开销。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.