我可以指定DEFAULT以获取列的确切值吗?SQL创建表[默认]
我正在创建一个Serial
表,有范围,有的有From
和To
,有的只是单数。
因此,我有两列:[Serial_Fr]
& [Serial_To]
如果我插入Serial_Fr
只,我想填充Serial_To = Serial_Fr
。
我该怎么做?或者我应该使用触发器,并设置默认值='',在这样做时,我认为这会在我拥有数百万个连续剧时造成压力。
我可以指定DEFAULT以获取列的确切值吗?SQL创建表[默认]
我正在创建一个Serial
表,有范围,有的有From
和To
,有的只是单数。
因此,我有两列:[Serial_Fr]
& [Serial_To]
如果我插入Serial_Fr
只,我想填充Serial_To = Serial_Fr
。
我该怎么做?或者我应该使用触发器,并设置默认值='',在这样做时,我认为这会在我拥有数百万个连续剧时造成压力。
创建视图是
CREATE VIEW MyView AS
SELECT
Serial_Fr,
Serial_To = COALESCE(Serial_To,Serial_Fr)
FROM MyTable
否则,可能在Stored Procedure
做,但什么是错的留下一些Serial_To
作为NULL
条目?
编辑
ISNULL
T-sql
是:COALESCE
是92标准的SQL。有这些功能HERE ON SO
马丁·史密斯也指有说明了差异这个有趣的例子文章之间的细微差别了很好的讨论:
DECLARE @test VARCHAR(2)
DECLARE @first VARCHAR(4)
DECLARE @second VARCHAR(4)
SELECT @first = ISNULL(@test, 'test')
SELECT @second = COALESCE(@test, 'test')
PRINT @first
PRINT @second
*** *** SQL刚好在*结构化查询语言* - 许多数据库系统使用的语言,但不是数据库产品...许多东西都是特定于供应商的 - 所以我们真的需要知道您的数据库系统**(以及哪个版本)使用.... – 2013-03-06 06:38:04
MSSQL对不起,在急于打字。 – Sid 2013-03-06 06:44:32
你必须使用一个触发器,但你也可以在查询表时将它保留为NULL并处理它。类似于'BETWEEN Serial_Fr AND ISNULL(Serial_To,Serial_Fr)' – 2013-03-06 06:51:05