如果你非要想偷懒一下, 那么可以自己写一个 函数, 来获取 表里面指定列的 默认值。
以下语句在 SQL Server 2008 Express 下执行通过。
理论上 SQL Server 2005 应该也可以。
你要是用 SQL Server 2000 的话, 我也就无能为力了。
首先, 是一个查询 指定表的 所有列的默认值信息的 一个 SQL 语句。
selectcol.name,
def.definition
from
sys.columns col
LEFT JOIN sys.default_constraints def
ON (col.default_object_id = def.object_id)
WHERE
col.object_id = (SELECT object_id FROM sys.tables WHERE name = 'test_default')
name definition
------------------------------- --------------------------------
id NULL
Value1 ('非空的列,自动设置数据')
Value2 ('允许为空的,不自动设置')
Value3 ('允许为空的,强制设置')
(4 行受影响)
下面是一个 自定义的 函数, 仅仅返回 varchar 类型的。 其他数据类型的, 可自己想办法修改。
-- 函数: 获取 指定表,指定列的默认值定义.CREATE FUNCTION GetDefaultValue( @tableName VARCHAR(32), @columnName VARCHAR(32) )
RETURNS VARCHAR(100) AS
BEGIN
DECLARE @result AS VARCHAR(100)
-- 查询默认值.
SELECT
@result = def.definition
FROM
sys.columns col
LEFT JOIN sys.default_constraints def
ON (col.default_object_id = def.object_id)
WHERE
col.object_id = OBJECT_ID(@tableName)
AND col.name = @columnName
-- 如果数据存在. 去除两头的括号.
IF @result IS NOT NULL
BEGIN
SET @result = SUBSTRING( @result, 2, LEN(@result) - 2)
END
-- 返回.
return @result
END
下面是一个调用自定义函数的例子:
SELECT dbo.GetDefaultValue('test_default', 'Value1') AS def_Valdef_Val
-------------------------------
'非空的列,自动设置数据'
(1 行受影响)
第一步:确认你的服务器是运行的。在企业管理器中看到服务器处如果有个绿色的小三角形,表示运行成功;如果是红色方块,则未成功,如果无法用“启动”连接成功,你需要对着服务器名称点鼠标右键,选择“新建SQL SERVER注册”,然后在d出的向导对话框中选择“下一步”,然后在出现的“可用的服务器”中选择一个已有的服务器,点“添加”,然后点“下一步”,选择使用“Windows身份验证登录”,然后一路默认点下去,最后完成,就可以启动你的服务器了。第二步:启动成功后在企业管理器里面的服务器上右键,选属性,在“安全性”中选择验证方式为“SQL SERVER和WINDOWS”,确定。
第三步:打开查询分析器后如果还没有自动连接成功,在连接登录框上选中“如果SQL SERVER已停止,则启动它”,然后选择一个可用服务器(在上面的下拉框右下角的省略号处点击,等一会儿就行)。然后你可以选择用系统验证登录还是用SQL SERVER验证登录,后者需要你有自己的帐号和密码(可以在企业管理器的“安全性”——>“登录”中新建帐号。如果只是为了练习SQL语句,那么推荐使用系统验证,这样方便些。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)