2013-03-06 102 views
0

我可以指定DEFAULT以獲取列的確切值嗎?SQL創建表[默認]

我正在創建一個Serial表,有範圍,有的有FromTo,有的只是單數。

因此,我有兩列:[Serial_Fr] & [Serial_To]

如果我插入Serial_Fr只,我想填充Serial_To = Serial_Fr

我該怎麼做?或者我應該使用觸發器,並設置默認值='',在這樣做時,我認爲這會在我擁有數百萬個連續劇時造成壓力。

+2

*** *** SQL剛好在*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品...許多東西都是特定於供應商的 - 所以我們真的需要知道您的數據庫系統**(以及哪個版本)使用.... – 2013-03-06 06:38:04

+1

MSSQL對不起,在急於打字。 – Sid 2013-03-06 06:44:32

+2

你必須使用一個觸發器,但你也可以在查詢表時將它保留爲NULL並處理它。類似於'BETWEEN Serial_Fr AND ISNULL(Serial_To,Serial_Fr)' – 2013-03-06 06:51:05

回答

0

創建視圖是

CREATE VIEW MyView AS 
SELECT 
    Serial_Fr, 
    Serial_To = COALESCE(Serial_To,Serial_Fr) 
FROM MyTable 

否則,可能在Stored Procedure

做,但什麼是錯的留下一些Serial_To作爲NULL條目?


編輯

ISNULLT-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 
+0

我沒有得到這個解決方案...對不起。有時候,我將串行從串行連接填充到不同的位置。不總是一樣的 – Sid 2013-03-06 09:23:03

+0

好 - 只是解決方案的視圖部分將工作 - 雖然我需要稍微修改它 – whytheq 2013-03-06 09:30:18

+0

@Sid你嘗試創建一個視圖嗎? – whytheq 2013-03-08 07:22:42