TSQL BINARY_CHECKSUM 作为默认值
- 作者: 不良君丶
- 来源: 51数据库
- 2022-12-30
问题描述
表中有一个列,它应该存储列列表的校验和,但我想将其创建为该表的默认值:
There is a column in a table, which should store Checksum for list of columns, but I'd like to create it as a default value for this table:
CREATE TABLE tblVitalyTest (id BIGINT IDENTITY(1,1), startTime DATETIME, value1 INT, value2 INT, value3 INT, value4 DATETIME, BinCheckSum BIGINT) GO ALTER TABLE tblVitalyTest ADD DEFAULT (BINARY_CHECKSUM(value1, value2, value3, value4)) FOR [BinCheckSum] GO
所以,应该这样使用:
INSERT INTO tblVitalyTest (startTime,value1,value2,value3,value4) VALUES ('2015-05-25',1,1,1,'2015-11-11')
结果应该是这样的:
id、startTime、value1、value2、value3、value4、BinCheckSum
id, startTime, value1, value2, value3, value4, BinCheckSum
1, "2015-05-25", 1, 1, 1, "2015-11-11", 46173
1, "2015-05-25", 1, 1, 1, "2015-11-11", 46173
但不幸的是,表默认"表创建失败.
But table "default" table creation fails unfortunately.
有一个查询可以玩:
DECLARE @a TABLE (id BIGINT IDENTITY(1,1), startTime DATETIME, value1 INT, value2 INT, value3 INT, value4 DATETIME)
INSERT INTO @a (startTime,value1,value2,value3,value4)
VALUES ('2015-05-25 08:00',1,1,1,'2015-11-11'),('2015-05-25 09:00',1,2,1,'2015-11-11')
,('2015-05-25 10:00',null,null,null,'2015-11-11'),('2015-05-25 11:00',2,1,1,'2015-11-11'),('2015-05-25 11:00',null,null,null,'2015-11-12')
SELECT a.*,BINARY_CHECKSUM(a.value1,a.value2,a.value3,a.value4) [BinCheckSum]
FROM @a a
请告诉我有没有办法创建一个 Binary_Checksum 作为列的默认值?
Please let me know is there any way to create a Binary_Checksum as a default value for the column?
推荐答案
基本上你不能.但是你可以用触发器做类似的事情.见下文
Basically you can't. But you can do something similar with a trigger. See below
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER dbo.tblVitalyTestUpdateInsertTrigger ON dbo.tblVitalyTest
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE
vt
SET
vt.BinCheckSum = BINARY_CHECKSUM(vt.value1, vt.value2, vt.value3,
vt.value4)
FROM
dbo.tblVitalyTest vt
INNER JOIN INSERTED i
ON vt.id = i.id
END
GO
推荐阅读
热点文章
检查拆分键盘
0
带有“上一个"的工具栏和“下一个"用于键盘输入AccessoryView
0
Activity 启动时显示软键盘
0
UIWebView 键盘 - 摆脱“上一个/下一个/完成"酒吧
0
在 iOS7 中边缘滑动时,使键盘与 UIView 同步动画
0
我的 iOS 应用程序中的键盘在 iPhone 6 上太高了.如何在 XCode 中调整键盘的分辨率?
0
android:inputType="textEmailAddress";- '@' 键和 '.com' 键?
0
禁用 iPhone 中键盘的方向
0
Android 2.3 模拟器上的印地语键盘问题
0
keyDown 没有被调用
0
