mysql - 使用逐行操作设置 SQL 列默认值
问题描述
是否可以在 SQL 列中设置由其他列组成的默认值?例如,在下表中是否可以将 EndDate 默认设置为 StartDate + NoOfDays?所以插入的时候只需要INSERT INTO xxx VALUES StartDate NoOfDays。
解决方案
您可以使用生成的列:
create table mytable (
startdate datetime not null,
noofdays int not null,
enddate datetime as (startdate + interval noofdays day)
);
然后,您将插入如下:
insert into mytable (startdate, noofdays) values(now(), 3);
生成:
开始日期 | 中午 | 结束日期 :----------------- | --------: | :----------------- 2020-12-12 01:28:27 | 3 | 2020-12-15 01:28:27
请注意,这与您在问题中提到的default不完全相同。默认值适用于常规列,并且仅在insert
时间未提供值时使用。另一方面,不能直接写入生成的列。
编辑
在 SQL Server 中:
create table mytable (
startdate datetime not null,
noofdays int not null,
enddate as dateadd(day, noofdays, startdate)
)
推荐阅读
- reactjs - 如何在 React.js 中使用 store.subscribe?
- python - 关于pytorch学习率调度器
- c - 为什么我可以将整数作为任务参数传递,但不能传递结构变量?
- asp.net - 使用引导程序使一些设计消失
- node.js - 如何在 Cloud Function for Firebase 中执行查询并检索特定属性
- javascript - 如何在使用钩子触发操作后重新呈现我的 redux 状态?
- tableau-api - 如何在标题中显示散点图上的标记数
- excel - 在 Excel 的公式中使用最新的单元格
- docker - Keycloak 8:已添加用户名为“admin”的用户
- c - 如何在c中通过引用传递typedef struct