如何让一个字段的默认值等于另一个字段的值

如题所述

--完整的示例--sqlserver建表表时设置字段的默认值createtable表(idint,namevarchar(10)default'张三',ageint)--添加字段时设置字段的默认值altertable表addsexchar(2)default'男'--为表中现有的字段设置默认值altertable表addconstraintDF_age_表default(20)foragego--插入一条记录验证insert表(id)values(1)select*from表go约束主要有一下几种:NOTNULL:用于控制字段的内容一定不能为空(NULL)。 UNIQUE:控件字段内容不能重复,一个表允许有多个Unique约束。PRIMARYKEY: 也是用于控件字段内容不能重复,但它在一个表只允许出现一个。FOREIGNKEY: FOREIGNKEY约束用于预防破坏表之间连接的动作,FOREIGNKEY约束2.也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。CHECK:用于控制字段的值范围。DEFAULT:用于设置新记录的默认值。notnull:用于控制字段的内容一定不能为空(NULL)。 用法:CreatetableMyTable ( idvarchar(32)notnull, namevarchar(32) ) PrimaryKey:也是用于控件字段内容不能重复,但它在一个表只允许出现一个。 在SqlServer、Orcale、MSAccess支持的添加PrimaryKey语法: CreatetablemyTB1 ( idnvarchar(32)notnullprimarykey, namenvarchar(32) )
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
你的代码有以下几个问题:
1. 判断是否是NULL应使用is,而不是=
2. 修改字段值应使用UPDATE语句

故你的代码修改成下面这样,试试看
create trigger tigger1 on UserInfo
for insert
as
declare @i1 as int --这里类型实际应修改为a的类型
select @i1 = UserInfo.a
from UserInfo join inserted on UserInfo.主键 = inserted.主键

if ( @i1 is null)
update UserInfo
set a = UserInfo.b
from UserInfo join inserted on UserInfo.主键 = inserted.主键本回答被提问者采纳
第2个回答  2020-04-01
用两个查询很容易实现,第一个查询汇总借方金额和贷方金额,第二个查询以第一个为基础直接相减就行了。
相似回答