sqlserver字段如何自动更新
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver字段如何自动更新相关的知识,希望对你有一定的参考价值。
在sqlserver2000里,有2张表,一张是留言表,一张是回复表,留言表的主键id是自动递增的,而回复表里有一个回复主键id也是自动递增的,还有一个和留言表相关联的外键,也就是留言表的主键,现在问题是,往留言表里添加留言,每添加一条留言,id号多会递增1,请问回复表的外键能否自己跟着递增呢?还是说,表该如何设计才能达到这个效果呢?
参考技术A 回复表的主键跟外键没有关系 每添加一条回复 回复表里面插入的新数据 主键添加 而外键是对应留言表的 2者根本不是同一个概念mysql如何让时间属性不自动更新
我的数据表中有一个timestamp属性字段,默认值是current_timestamp,这里有个弊端就是每次更新如果不给这个字段传入值,那么它是null,数据库会自动更新当前的时间,由于这个时间字段我是记录以前的信息,每次更新时间都在变,那么问题就大了,我想请教知友们... 我的数据表中有一个timestamp属性字段,默认值是current_timestamp,这里有个弊端就是每次更新如果不给这个字段传入值,那么它是null,数据库会自动更新当前的时间,由于这个时间字段我是记录以前的信息,每次更新时间都在变,那么问题就大了,我想请教知友们,我该如何设置才能使不传入时间,更新也不会改变当前的字段值? 展开 问题解决了,找了这么久关键字总算让我不再这范围的关键字文章中找到了。 其实我上面理解错了自动更新不是因为current_timestamp的存在,后面还要加上on update current 这句是更新的关键,所以我取消了这一句在数据库中只让默认值为current_timestamp这样就不会更新了
参考技术A 既然楼主已经解决了,我就顺便粘贴点
测试的
sql
代码上来吧
首先是
插入
与
更新,
都会修改
TIMESTAMP
的情况:
create
table
testB
(
id
int
PRIMARY
KEY,
val
varchar(10),
dt
TIMESTAMP
);
INSERT
INTO
testB(id,
val)
VALUES(1,
'A');
INSERT
INTO
testB(id,
val)
VALUES(2,
'B');
SELECT
*
FROM
testB;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
A
|
2013-03-21
14:24:20
|
|
2
|
B
|
2013-03-21
14:24:21
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
UPDATE
testB
SET
val
=
'C'
WHERE
id
=
1;
SELECT
*
FROM
testB;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
C
|
2013-03-21
14:28:02
|
|
2
|
B
|
2013-03-21
14:24:21
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
然后是
仅仅插入时设置,
修改时不更新的情况
假如仅仅需要
插入时记录时间,
更新的时候不需要,
那么需要修改表定义方式:
TIMESTAMP
not
null
default
CURRENT_TIMESTAMP
create
table
testC
(
id
int
PRIMARY
KEY,
val
varchar(10),
dt
TIMESTAMP
not
null
default
CURRENT_TIMESTAMP
);
INSERT
INTO
testC(id,
val)
VALUES(1,
'A');
INSERT
INTO
testC(id,
val)
VALUES(2,
'B');
SELECT
*
FROM
testC;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
A
|
2013-03-21
14:35:12
|
|
2
|
B
|
2013-03-21
14:35:13
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
UPDATE
testC
SET
val
=
'CC'
WHERE
id
=
1;
SELECT
*
FROM
testC;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
CC
|
2013-03-21
14:35:12
|
|
2
|
B
|
2013-03-21
14:35:13
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
以上是关于sqlserver字段如何自动更新的主要内容,如果未能解决你的问题,请参考以下文章