SQL Server - 默认值

时间:2014-08-31 01:34:19

标签: sql sql-server default-value

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

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字段的值?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

感谢。