2012-04-23 37 views
2

我在我的數據庫中有20個表和相同的列。更改幾個表中的列參數

我想改變所有表中的流派(表中的列)的默認值。

它可能與SQL語句?

+0

這些答案都還不錯,只是擡起頭,HTTP ://stackoverflow.com/a/175446/18821顯示瞭如何獲取數據庫中的所有表名,如果要生成所有ALTER語句,然後手動運行其中的所有20個語句,這可能很有用。 – 2012-04-23 15:06:04

回答

2

有了一個快速的研究,我得到這個:

ALTER TABLE table_name 
ALTER COLUMN column_name datatype SET DEFAULT default_value 

我不是一個SQL專家雖然,但這似乎像它會做的工作。 來源:http://www.w3schools.com/sql/sql_default.asp。無論如何,這是一個很好的sql問題資源。

1
ALTER TABLE dbo.Tbl_1 
    DROP CONSTRAINT DF_genre 

ALTER TABLE dbo.Tbl_1 ADD CONSTRAINT 
    DF_genre DEFAULT ('new value') FOR genre 

替換「DF_genre」與任何約束被命名爲每個表。

+0

Thx,anf如果我有另一個參數,nef獲取默認值? – MTA 2012-04-23 14:09:23

+0

如果我正確理解您的問題,您需要爲每個表或參數運行單獨的語句。如果其他參數尚未具有默認值,則可以省略第一個DROP CONSTRAINT查詢。 – Faust 2012-04-23 14:24:21

2

只是小幅上浮士德的答案擴大,這可能使用SP_MSFOREACHTABLE(無證程序)來完成,不再需要編寫所有表:

EXECUTE SP_MSFOREACHTABLE 
    @Command1 = 'ALTER TABLE ? ADD CONSTRAINT DF_Genre DEFAULT (''Default'') FOR Genre ', 
    @WhereAnd = 'AND o.Name IN (SELECT Table_Name FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = ''Genre'')'