何时初始化默认值?

阿卡什
create table tab3(a integer,d1 datetime default getdate())
insert into tab3(a) values(1)
insert into tab3 (a) select a from tab3
GO 20
insert into tab3 (a) select a from tab3

select d1,count(*) from tab3(NOLOCK) group by d1

最终插入肯定会花费很短的时间(在我的机器上为3秒)

但是,d1每批中的值是不同的。即最终查询仅返回22行

2014-06-22 20:34:53.787 1
2014-06-22 20:34:56.127 1
2014-06-22 20:34:56.140 2
2014-06-22 20:34:56.153 4
2014-06-22 20:34:56.157 8
2014-06-22 20:34:56.160 16
2014-06-22 20:34:56.163 32
2014-06-22 20:34:56.167 64
2014-06-22 20:34:56.170 128
2014-06-22 20:34:56.177 256
2014-06-22 20:34:56.183 512
2014-06-22 20:34:56.193 1024
2014-06-22 20:34:56.210 2048
2014-06-22 20:34:56.240 4096
2014-06-22 20:34:56.293 8192
2014-06-22 20:34:56.397 16384
2014-06-22 20:34:56.493 32768
2014-06-22 20:34:56.607 65536
2014-06-22 20:34:56.817 131072
2014-06-22 20:34:57.240 262144
2014-06-22 20:34:57.710 524288
2014-06-22 20:35:01.630 1048576

为什么要按语句而不是按插入初始化GETDATE()?

如何确保在不使用游标的情况下,按行而不是按语句初始化默认值?

编辑:可能相关,tab3_log具有与tab3相同的架构

CREATE TRIGGER tab3_logger on tab3
AFTER INSERT
AS
BEGIN
INSERT INTO tab3_log(a) select a from inserted
END

将单个插入语句中的所有行显示为具有相同的日期时间

马丁·史密斯

何时初始化默认值?

这取决于表达式是否为“运行时常量”。

为了获得所需的行为,您可以将调用包装在标量UDF中。

CREATE FUNCTION dbo.F()
RETURNS DATETIME
AS
  BEGIN
      RETURN GETDATE()
  END

GO

CREATE TABLE T
  (
     A CHAR(8000) NULL,
     B FLOAT DEFAULT RAND(), 
     C DATETIME DEFAULT GETDATE(),
     D DATETIME DEFAULT dbo.F(),
     E UNIQUEIDENTIFIER DEFAULT NEWID()
  )

INSERT INTO T
            (A)
SELECT TOP 100000 'A'
FROM   master..spt_values v1,
       master..spt_values v2

SELECT COUNT(DISTINCT B) AS B,
       COUNT(DISTINCT C) AS C,
       COUNT(DISTINCT D) AS D,
       COUNT(DISTINCT E) AS E
FROM   T

GO

DROP TABLE T;
DROP FUNCTION F;

返回值(例如,的确切值D会有所不同)

+---+---+-----+--------+
| B | C |  D  |   E    |
+---+---+-----+--------+
| 1 | 1 | 823 | 100000 |
+---+---+-----+--------+

每个语句对前两个进行评估,每行对后两个进行评估。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

何时初始化默认值?

来自分类常见问题

默认值和零初始化混乱

来自分类Dev

Rails使用默认值初始化新对象

来自分类Dev

Ruby Hash初始化(默认值为nil)

来自分类Dev

找不到系统BootOrder。初始化默认值

来自分类Dev

多值设置未使用默认值初始化

来自分类Dev

无法使用默认值初始化结构

来自分类Dev

未初始化的枚举数默认值

来自分类Dev

使用默认值初始化HashMap吗?

来自分类Dev

未初始化变量的默认值

来自分类Dev

无法使用默认值初始化输入[数字]

来自分类Dev

用默认值初始化const类成员

来自分类Dev

初始化期间的可编码默认值

来自分类Dev

如何使用默认值动态初始化数组?

来自分类Dev

用默认值初始化weka实例

来自分类Dev

C ++双重初始化-默认值?

来自分类Dev

LinkedList 初始化时的默认值

来自分类Dev

自动贴图| 如果不是默认值/初始化值,则仅映射

来自分类Dev

使用具有默认值的哈希值初始化ruby对象?

来自分类Dev

如果取了一个未初始化的变量的地址,它是否被初始化为默认值?

来自分类Dev

具有默认值的C ++统一初始化

来自分类Dev

使用非默认值在VBA中初始化静态变量

来自分类Dev

对具有默认值的结构进行括号(聚合)初始化

来自分类Dev

如何使花括号初始化和默认值一起工作?

来自分类Dev

如何在sqlalchemy中使用默认值初始化数据库?

来自分类Dev

Java-Hibernate条件.setResultTransformer()使用默认值初始化模型字段

来自分类Dev

使用一组默认值(elm或haskell)初始化模块

来自分类Dev

在C中,未初始化的数组中char的默认值是什么?

来自分类Dev

如何使用n个默认值初始化队列?

Related 相关文章

热门标签

归档