mysql多个TimeStamp设置_MySQL
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
핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











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

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

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

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

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

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

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

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