小编Vah*_*ian的帖子

您可以在默认约束中使用插入的变量吗

在 SQL Server 中工作,假设我有一个包含两个表的数据库:eventscompetitors.

events 有以下列:

[event_id] [event_name] [winner_id] [loser_id]
Run Code Online (Sandbox Code Playgroud)

competitors 有以下列:

[comp_id] [comp_name]
Run Code Online (Sandbox Code Playgroud)

我想添加一个默认约束以[event_name]在插入新事件时节省我的时间。类似于:

ALTER TABLE [events]
ADD CONSTRAINT DF_event_name
DEFAULT CAST([winner_id] AS varchar(10)) + ' vs ' + CAST([loser_id] AS varchar(10)) FOR [event_name]
Run Code Online (Sandbox Code Playgroud)

当然,这是一个简化版本,它还需要使用competitors ON comp_id = winner_id and comp_id = loser_id.

当我尝试设置上述默认约束时,我得到了您可能期望的响应:

在此上下文中不允许使用名称“winner_id”。有效的表达式是常量、常量表达式和(在某些上下文中)变量。不允许使用列名。

那么有什么办法可以解决我想要做的事情吗?
有没有办法自动将单元格的值设置为实现从同一行插入的数据的字符串?如果可能的话,是否也可以使用 join 语句来完成?我的下一个想法是触发器。

join sql-server default-value cast

6
推荐指数
1
解决办法
1084
查看次数

标签 统计

cast ×1

default-value ×1

join ×1

sql-server ×1