【问题标题】:How do I use database defaults for input fields? [closed]如何为输入字段使用数据库默认值? [关闭]
【发布时间】:2021-03-10 19:41:06
【问题描述】:

我想在 c# 中为输入框使用数据库默认值 我有 3 列。 orderID (serial int) order_time (now()) 和文本列。

如何让 c# 只输入文本列,以便我的数据库自己添加 int 和时间戳?

【问题讨论】:

  • @ErwinBrandstetter 如果 OP 为此要求提供 C# 代码 sn-p,它怎么不相关?
  • @YegorAndrosov:是吗?好吧,我想你也可以这样读。无论哪种方式,它都会被简化为一条 SQL 命令。
  • @ErwinBrandstetter 它会被简化为 SQL 命令,如果 OP 使用任何 ORM(例如实体框架),则不是。那么它可以在没有explicit SQL 命令的情况下实现。由于缺少调试细节,我投票结束这个问题
  • ORM 只是一个穷人的 SQL 生成器。仍然烧毁为一条 SQL 命令。

标签: c# postgresql sql-insert default-value


【解决方案1】:

INSERT 语句可以简单地省略所有应该获得默认值的列:

INSERT INTO tbl (text_column) VALUES ('user_input');

这导致serial 被分配到附加的SEQUENCE 中的下一个数字,time 被分配事务时间戳now()

The manual:

显式或隐式列列表中不存在的每一列都将被填充一个默认值,要么是其声明的默认值,要么如果没有,则为 null。

更明确地说,您也可以使用DEFAULT 关键字:

INSERT INTO tbl ("orderID", order_time, text_column)
VALUES (DEFAULT, DEFAULT, 'user_input');

The manual:

DEFAULT

相应的列将填充其默认值。一个 身份列将填充由生成的新值 关联的序列。对于生成的列,指定这是 允许但仅指定计算的正常行为 列从其生成表达式。

您甚至可以将两者结合起来:省略一些列,而将DEFAULT 用于其他一些列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2021-09-17
    • 2021-12-05
    • 2019-03-18
    • 2013-06-05
    • 2017-08-04
    • 1970-01-01
    相关资源
    最近更新 更多