连续插入2个DEFAULT约束

时间:2018-02-28 21:42:20

标签: sql

假设我有一个类似的创建表脚本:

CREATE TABLE Person (
    id INT PRIMARY KEY,
    age INT DEFAULT 18,
    iq INT DEFAULT 100
);

所以我连续有两个DEFAULT约束。现在我像这样插入:

INSERT INTO Person VALUES(1,85);

我们如何知道我们是否跳过属性age或属性iq

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

你的问题的答案:这取决于。 ; - )

的MySQL

在MySQL上运行查询会出现以下错误:

public ActionResult Edit(int id)
        {
            // gets the customer details by accessing it's id
            var customerInDb = _context.Customers.SingleOrDefault(c => c.Id == id);

对于MySQL,您需要告诉DBMS您希望拥有哪些列(以及DB应使用默认数据填充哪些列)。像这样:

Error: ER_WRONG_VALUE_COUNT_ON_ROW: Column count doesn't match value count at row 1

或者你需要告诉数据库,在哪里使用默认值。您可以为这些列传递关键字INSERT INTO Person(id, age) VALUES(1,85);

DEFAULT

请参阅:MySQL INSERT Syntax

的SQLite

SQLite就像MySQL一样,这里的错误信息是:

INSERT INTO Person VALUES(1,85, DEFAULT);

这意味着,您必须指定列。

的PostgreSQL

在PostgreSQL表上运行查询将产生

SQLITE_ERROR: table Person has 3 columns but 2 values were supplied

这里PostgreSQL将按照定义的顺序使用表定义中的列,并使用默认值填充所有剩余列。

MS SQL Server

请参阅:How to insert default values in SQL table?