Ste*_*hRT 2 sql sql-server ssms sql-server-2012 sql-server-2014
嘿所有我希望有人有一个脚本,有助于批量
说我有这样一张桌子:
CREATE TABLE [dbo].[Table_3](
[value1] [varchar](50) NOT NULL,
[value2] [varchar](50) NOT NULL,
[value3] [varchar](50) NOT NULL,
[value4] [nchar](10) NOT NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)
而不是NOT NULL我想为值(又名'')输入一个空白.
现在我知道它可以这样做:
ALTER TABLE [dbo].[Table_3] ADD CONSTRAINT [DF_Table_3_value1] DEFAULT ('') FOR [value1]
GO
ALTER TABLE [dbo].[Table_3] ADD CONSTRAINT [DF_Table_3_value2] DEFAULT ('') FOR [value2]
GO
etc...
Run Code Online (Sandbox Code Playgroud)
但是我不想为每个列手动执行此操作,因为我的一些表有100多列.
是否有任何类型的查询将循环遍历我的所有列并将它们设置为我的默认值('')?
这是一种方式
DECLARE @tblName VARCHAR(MAX)
DECLARE @SQL VARCHAR(MAX)
SET @tblName = 'Table_3'
SET @SQL = (SELECT 'ALTER TABLE [dbo].[' + @tblName + '] ADD CONSTRAINT [DF_' + @tblName + '_'
+ COLUMN_NAME + '] DEFAULT ('''') FOR '
+ Quotename(COLUMN_NAME) + '; '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tblName
AND COLUMN_NAME LIKE 'value%'
AND IS_NULLABLE = 'NO'
FOR XML PATH(''))
--PRINT @SQL
EXEC (@SQL)
Run Code Online (Sandbox Code Playgroud)
在表中有100多列不合适.您可能需要重组您的表格
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |