목차
一个表中至多只能有一个字段设置CURRENT_TIMESTAMP
分析需求
1 使用触发器。
2 将第一个timestamp的default设置为0
3 老老实实在sql语句中使用时间戳。
데이터 베이스 MySQL 튜토리얼 mysql多个TimeStamp设置_MySQL

mysql多个TimeStamp设置_MySQL

Jun 01, 2016 pm 01:38 PM
표면

bitsCN.com

timestamp设置默认值是Default CURRENT_TIMESTAMP

timestamp设置随着表变化而自动更新是ON UPDATE CURRENT_TIMESTAMP

 

但是由于

一个表中至多只能有一个字段设置CURRENT_TIMESTAMP

两行设置DEFAULT CURRENT_TIMESTAMP是不行的。

 

还有一点要注意

CREATE TABLE `device` (    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,    `toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid',    `createtime` TIMESTAMP NOT NULL COMMENT '创建时间',    `updatetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新时间',    PRIMARY KEY (`id`),    UNIQUE INDEX `toid` (`toid`))COMMENT='设备表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
로그인 후 복사

像这个设置也是不行的。

原因是mysql会默认为表中的第一个timestamp字段(且设置了NOT NULL)隐式设置DEFAULAT CURRENT_TIMESTAMP。所以说上例那样的设置实际上等同于设置了两个CURRENT_TIMESTAMP。

分析需求

一个表中,有两个字段,createtime和updatetime。

1 当insert的时候,sql两个字段都不设置,会设置为当前的时间

2 当update的时候,sql中两个字段都不设置,updatetime会变更为当前的时间

这样的需求是做不到的。因为你无法避免在两个字段上设置CURRENT_TIMESTAMP

解决办法有几个:

1 使用触发器。

当insert和update的时候触发器触发时间设置。

网上有人使用这种方法。当然不怀疑这个方法的可用性。但是对于实际的场景来说,无疑是为了解决小问题,增加了复杂性。

2 将第一个timestamp的default设置为0

表结构如下:

CREATE TABLE `device` (    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,    `toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid',    `createtime` TIMESTAMP NOT NULL DEFAULT 0 COMMENT '创建时间',    `updatetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',    PRIMARY KEY (`id`),    UNIQUE INDEX `toid` (`toid`))COMMENT='设备表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
로그인 후 복사

这样的话,你需要的插入和更新操作变为:

insert into device set toid=11,createtime=null;

update device set toid=22 where id=1;

这里注意的是插入操作的createtime必须设置为null!!

虽然我也觉得这种方法很不爽,但是这样只需要稍微修改insert操作就能为sql语句减负,感觉上还是值得的。这也确实是修改数据库最小又能保证需求的方法了。当然这个方法也能和1方法同时使用,就能起到减少触发器编写数量的效果了。

3 老老实实在sql语句中使用时间戳。

这个是最多人也是最常选择的

表结构上不做过多的设计:

CREATE TABLE `device` (    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,    `toid` INT(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'toid',    `createtime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',    `updatetime` TIMESTAMP NOT NULL COMMENT '最后更新时间',    PRIMARY KEY (`id`),    UNIQUE INDEX `toid` (`toid`))COMMENT='设备表'COLLATE='utf8_general_ci'ENGINE=InnoDB;
로그인 후 복사

这样你就需要在插入和update的操作的时候写入具体的时间戳。

insert device set toid=11,createtime=’2012-11-2 10:10:10’,updatetime=’2012-11-2 10:10:10’

update device set toid=22,updatetime=’2012-11-2 10:10:10’ where id=1

其实反观想想,这样做的好处也有一个:current_timestamp是mysql特有的,当数据库从mysql转移到其他数据库的时候,业务逻辑代码是不用修改的。

 

ps:这三种方法的取舍就完全看你自己的考虑了。顺便说一下,最后,我还是选择第三种方法。

bitsCN.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL에서 테이블 데이터를 보기 위해 명령문을 구현하는 방법은 무엇입니까? MySQL에서 테이블 데이터를 보기 위해 명령문을 구현하는 방법은 무엇입니까? Nov 08, 2023 pm 01:40 PM

제목: MySQL에서 테이블 데이터를 보기 위한 명령문 및 특정 코드 예 MySQL은 모든 규모의 애플리케이션에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. MySQL에서 테이블 데이터를 보는 것은 매우 기본적인 작업입니다. 다음에서는 구체적인 문과 코드 예제를 통해 이 작업을 구현하는 방법을 소개합니다. 먼저 MySQL 명령줄 도구를 통해 테이블 ​​데이터를 보기 위한 명령문과 구체적인 코드 예제를 소개합니다. "employees"라는 테이블이 있다고 가정하면 다음은 패스입니다.

NEAR 프로토콜 코인이란 무엇입니까? NEAR 프로토콜 통화의 특징은 무엇입니까? NEAR 프로토콜 코인이란 무엇입니까? NEAR 프로토콜 통화의 특징은 무엇입니까? Mar 04, 2024 pm 11:20 PM

NEARProtocol: 확장 가능하고 사용자 친화적인 블록체인 플랫폼 NEARProtocol은 확장성, 사용자 친화성 및 보안 측면에서 블록체인 기술이 직면한 문제를 해결하도록 설계된 샤딩 기술을 사용하는 블록체인 플랫폼입니다. 개발자에게 분산형 애플리케이션(dApp)을 쉽게 구축하고 배포할 수 있는 효율적이고 사용자 친화적인 플랫폼을 제공합니다. NEARProtocol은 높은 수준의 효율성과 보안을 제공하면서 블록체인 개발 장벽을 낮추도록 설계되었습니다. NEARProtocol은 샤딩 기술을 채택함으로써 대규모 거래를 더 잘 처리하고 사용자에게 더 빠른 거래 확인 시간을 제공할 수 있습니다. 전반적으로 NEARProtocol은 다음을 제공하도록 설계되었습니다.

Oracle 데이터베이스의 테이블에 대한 읽기 전용 권한을 설정하는 방법은 무엇입니까? Oracle 데이터베이스의 테이블에 대한 읽기 전용 권한을 설정하는 방법은 무엇입니까? Mar 06, 2024 pm 03:03 PM

Oracle 데이터베이스에서 테이블에 대한 읽기 전용 권한을 설정하는 것은 데이터 보안을 보호하고 오작동을 방지할 수 있는 매우 중요한 작업입니다. 다음에서는 Oracle 데이터베이스의 테이블에 대한 읽기 전용 권한을 설정하는 방법을 소개하고 특정 코드 예제를 제공합니다. 먼저, Oracle 데이터베이스에서 사용자는 인증을 통해 테이블에 대한 권한을 얻는다는 점을 이해해야 합니다. 테이블 권한에는 SELECT(쿼리), INSERT(삽입), UPDATE(업데이트) 및 DELETE(삭제) 작업이 포함됩니다. 여기서 소개하겠습니다

Antec 650 전원 공급 장치 마더보드 케이블 인터페이스의 핀 수는 몇 개입니까? (Antec 650 전원 배선도) Antec 650 전원 공급 장치 마더보드 케이블 인터페이스의 핀 수는 몇 개입니까? (Antec 650 전원 배선도) Jan 03, 2024 am 10:46 AM

Antec 650w 마더보드 케이블에는 몇 개의 핀이 있습니까? Antec 650W 전원 공급 장치 마더보드의 전원 케이블은 일반적으로 마더보드에서 가장 큰 전원 인터페이스인 24핀입니다. 그 기능은 마더보드와 전원 공급 장치를 연결하여 마더보드와 기타 시스템 구성 요소에 전원을 공급하는 것입니다. 또한 Antec 650W 전원 공급 장치에는 CPU 및 독립 그래픽 카드와 같은 다른 구성 요소를 연결하기 위한 CPU8핀, PCIe6+2핀 등과 같은 다른 유형의 전원 인터페이스도 포함될 수 있습니다. 마더보드 라우팅 튜토리얼 마더보드 라우팅은 마더보드를 설계할 때 다양한 전자 부품 간에 회로를 연결하는 프로세스입니다. 이 과정에서는 회로 안정성, 신호 전송 속도, 정확도 등의 요소를 고려해야 합니다. 회로도에 따라 배선을 배선할 때 레이아웃에 주의하고 적절한 선 폭과 거리를 선택하여 피하십시오.

MySQL을 사용하여 추천 시스템 테이블을 생성하여 추천 시스템 기능 구현 MySQL을 사용하여 추천 시스템 테이블을 생성하여 추천 시스템 기능 구현 Jul 02, 2023 am 10:01 AM

추천 시스템 기능을 구현하기 위해 MySQL을 사용하여 추천 시스템 테이블을 생성합니다. 추천 시스템은 사용자의 선호도와 행동을 기반으로 개인화된 콘텐츠를 추천하는 데 사용되는 시스템입니다. 추천 시스템에서 데이터베이스는 사용자 데이터, 아이템 데이터, 사용자-아이템 상호작용 데이터 등의 정보를 저장하는 핵심 구성요소이다. 일반적으로 사용되는 관계형 데이터베이스 관리 시스템인 MySQL은 추천 시스템 테이블을 생성하고 추천 시스템의 기능을 구현하는 데 사용할 수 있습니다. 이 기사에서는 MySQL을 사용하여 추천 시스템 테이블을 생성하는 방법을 소개하고 코드 예제를 통해 이를 보여줍니다.

MySQL에서 테이블 이름 바꾸기 명령문을 구현하는 방법은 무엇입니까? MySQL에서 테이블 이름 바꾸기 명령문을 구현하는 방법은 무엇입니까? Nov 08, 2023 pm 12:11 PM

MySQL은 테이블 이름 바꾸기 작업을 지원하는 일반적으로 사용되는 관계형 데이터베이스 관리 시스템입니다. 일반적으로 테이블 이름을 바꾸면 특정 위험이 따르므로 이 작업을 수행할 때는 매우 주의해야 합니다. 이 기사에서는 MySQL에서 테이블 이름 변경 문을 구현하는 방법을 살펴보고 자세한 코드 예제를 제공합니다. MySQL에서는 ALTERTABLE 문을 사용하여 테이블 이름을 바꿀 수 있습니다. 다음은 ALTERTABLE 이름 바꾸기 문의 기본 구문입니다. ALTERTABLEo

Microsoft 컴퓨터 케이스 권장 구성 목록 - Microsoft 컴퓨터 케이스 권장 구성 목록 Microsoft 컴퓨터 케이스 권장 구성 목록 - Microsoft 컴퓨터 케이스 권장 구성 목록 Dec 28, 2023 am 11:36 AM

Microsoft 컴퓨터 케이스는 컴퓨터를 보호하는 데 사용되는 케이스로, 추가적인 보호 기능을 제공할 뿐만 아니라 장식적인 효과도 더해줍니다. 컴퓨터에 개인화된 요소를 추가하려는 사람들에게는 Microsoft 컴퓨터 케이스가 이상적인 선택입니다. Microsoft 컴퓨터 케이스 권장 구성 표는 Microsoft 컴퓨터 케이스의 다양한 모델 및 사양에 대한 권장 구성을 나열하는 자세한 표입니다. Microsoft 컴퓨터 케이스의 권장 구성표를 자세히 소개하고 그 내용에 대해 몇 가지 설명합니다. 1. 적용 모델 권장 구성표에서 가장 먼저 고려해야 할 사항은 Microsoft 컴퓨터 케이스의 적용 모델입니다. Microsoft 컴퓨터 케이스 모델에 따라 크기와 모양이 다를 수 있으므로 컴퓨터 모델에 따라 적절한 케이스를 선택해야 합니다. 구성 표에는 다양한 모델에 적용할 수 있는 마이크로컨트롤러가 나열되어 있습니다.

MySQL은 사용자 권한 관리 기능을 구현하기 위해 사용자 권한 테이블을 생성합니다. MySQL은 사용자 권한 관리 기능을 구현하기 위해 사용자 권한 테이블을 생성합니다. Jul 02, 2023 pm 06:57 PM

MySQL은 사용자 권한 관리 기능을 구현하기 위해 사용자 권한 테이블을 생성합니다. MySQL은 강력한 사용자 권한 관리 기능을 제공하는 일반적으로 사용되는 관계형 데이터베이스 관리 시스템입니다. 다중 사용자 데이터베이스 환경에서는 사용자 권한을 적절하게 관리하는 것이 매우 중요합니다. 이 문서에서는 사용자 권한 테이블을 생성하여 사용자 권한 관리 기능을 구현하는 방법을 소개하고 코드 예제를 통해 설명합니다. 1. 권한 테이블 생성 먼저 사용자의 권한 정보를 저장할 권한 테이블을 생성해야 합니다. 권한 테이블의 필드에는 사용자 ID(user_

See all articles