Sql server 无法使用默认会话\表中用户约束(改为切换到用户\名称)
我定义了一个默认值为Sql server 无法使用默认会话\表中用户约束(改为切换到用户\名称),sql-server,sql-server-2014,Sql Server,Sql Server 2014,我定义了一个默认值为SESSION\u USER的约束,例如: CREATE TABLE [test] (col1 varchar(50)) GO ALTER TABLE [test] ADD CONSTRAINT [x] DEFAULT SESSION_USER FOR [col1] GO ALTER TABLE [dbo].[test] ADD CONSTRAINT [x] DEFAULT (user_name()) FOR [col1] 这似乎运行正常-命令已成功完成。 但是
SESSION\u USER
的约束,例如:
CREATE TABLE [test] (col1 varchar(50))
GO
ALTER TABLE [test] ADD CONSTRAINT [x] DEFAULT SESSION_USER FOR [col1]
GO
ALTER TABLE [dbo].[test] ADD CONSTRAINT [x] DEFAULT (user_name()) FOR [col1]
这似乎运行正常-命令已成功完成。
但是-实际定义已修改为使用user\u name()
函数,例如:
CREATE TABLE [test] (col1 varchar(50))
GO
ALTER TABLE [test] ADD CONSTRAINT [x] DEFAULT SESSION_USER FOR [col1]
GO
ALTER TABLE [dbo].[test] ADD CONSTRAINT [x] DEFAULT (user_name()) FOR [col1]
为什么会这样 因为
SESSION\u USER
是USER\u NAME()
的同义词:
连接到SQL Server实例时,请使用以下命令
要获取用户名或用户ID,请执行以下操作:
- ISO
或当前用户
可用于获取与当前连接关联的数据库用户名。在里面 Transact-SQL,这些函数作为会话用户
。(用户名()
未指定USER\u NAME
Transact-SQL函数database\u USER\u ID
也作为USER
用户名()的同义词