2012-04-23 33 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'')'