标签: default-value

在 SQL Server 中,是否在插入的默认约束之前或之后应用了检查约束?

根据标题:在 SQL Server 中,是否在插入的默认约束之前或之后应用了检查约束?

所以采用下表(为简洁起见省略了不必要的列)......

CREATE TABLE [dbo].[Customer](
    [CountryCode] [varchar](5) NULL CONSTRAINT [CK_Customer_DefaultCountryCode]  DEFAULT ([app].[GetUnknownCountryIsoCountryCode]()),
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

...还有以下检查约束...

ALTER TABLE [admin].[Customer]  WITH CHECK 
    ADD  CONSTRAINT [CK_CustomerHasCountryWhenIntercompanyBusinessModel] 
    CHECK  (
        ([app].[BusinessModelMustHaveCountry]([BusinessModelId]) = (1) AND [app].[CheckCountryCodeExists]([CountryCode]) = (1) OR 
        [app].[BusinessModelMustHaveCountry]([BusinessModelId]) <> (1))
    )
GO
Run Code Online (Sandbox Code Playgroud)

...是否会应用默认约束并在应用检查约束之前填充默认值?

sql-server constraint default-value check-constraints

5
推荐指数
1
解决办法
2063
查看次数

DEFAULT NULL 和“没有默认值的可空值”完全相同吗?

ALTER TABLE test_table ADD COLUMN a DEFAULT NULL;
Run Code Online (Sandbox Code Playgroud)

对比

ALTER TABLE test_table ADD COLUMN a;
Run Code Online (Sandbox Code Playgroud)

NULL如果a未指定列,则将设置两列。

据我所知,如果我将一列添加到生产数据库中具有默认值的表中,则可能会导致用默认值重写所有行时出现问题。

DEFAULT NULL一样的吗?

postgresql datatypes default-value postgresql-9.6

5
推荐指数
2
解决办法
1305
查看次数

使用默认分区中已存在的值创建新的表分区

我有下表:

CREATE TABLE orders
(
  info_date  date,
  country_code  VARCHAR,
  order_total   int,
  CONSTRAINT orders_pk PRIMARY KEY (info_date, country_code)
) PARTITION BY LIST (country_code);

CREATE TABLE orders_def PARTITION OF orders DEFAULT;
Run Code Online (Sandbox Code Playgroud)

我插入一些行country_code 'foo',它们最终位于默认分区中。

一段时间后,我决定应该'foo'有自己的分区,我该怎么做?

根据文档:

如果存在 DEFAULT 分区,并且 DEFAULT 分区中存在任何行,否则它们将适合要添加的新分区,则无法添加新分区。


这是我的尝试

begin;
CREATE TEMP TABLE temp_table ON COMMIT DROP AS 
SELECT * FROM orders where country_code = 'foo';
DELETE FROM orders where country_code = 'foo';
CREATE TABLE orders_foo PARTITION OF orders FOR VALUES IN ('foo');
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

postgresql migration partitioning default-value postgresql-11

4
推荐指数
1
解决办法
2342
查看次数

如何让 MySQL 使用函数返回的值作为默认值?

我有一个预先存在的表,其中有一列可以保存 UUID。

我希望能够定义一个默认值,以便(来自旧系统)进入的新行仍将通过该UUID()函数获得定义的 UUID -- 是否可以将列的默认值配置为由UUID(以类似于UNIX_TIMESTAMP()在 phpMyAdmin 中的方式)

mysql mysql-5 phpmyadmin default-value

3
推荐指数
1
解决办法
1460
查看次数

为什么我的用户定义表类型 (UDTT) 上的列默认值没有得到遵守?

我在 SQL 中创建了一个表类型:

CREATE TYPE [dbo].[MyObject_TableType] AS TABLE
(
    [Name] VARCHAR(MAX) DEFAULT '',
    [Index] VARCHAR(MAX) DEFAULT ''
)
Run Code Online (Sandbox Code Playgroud)

我构建了一个DataTable并用一个填充它DataRow。我将该表作为参数提供给存储过程:

// Set up connection and command variables (code omitted)
// ...

// Make the data table
var table = new DataTable();
table.Columns.Add("Name");
table.Columns.Add("Index");

// Add one row that is missing an Index    
var row = table.NewRow();
row["Name"] = "ObjectOne";
table.Rows.Add(row);

// Make a parameter for the table
var tableParameter = new SqlParameter("MyObjects", SqlDbType.Structured)
{
    TypeName = "MyObject_TableType", …
Run Code Online (Sandbox Code Playgroud)

sql-server default-value c# user-defined-table-type table-valued-parameters

3
推荐指数
1
解决办法
2451
查看次数

无法更改 MYSQL 表(陷入无效的默认值循环)

我如何有 2 列的默认值不正确。当我从另一个来源导入数据库时​​,不确定它是如何首先创建的。

现在的问题是,我无法对表进行任何更改,因为 MYSQL 会抱怨:

MySQL 说:“campaign_start_date”的默认值无效

如果我尝试添加一列。

但是当我尝试将DEFAULT VALUEto更改为CURRENT_TIMESTAMPfor 时campaign_start_date,它抱怨campaign_end_date有一个无效的默认值。

所以我陷入了一个循环,不允许我对表进行任何更改。

有没有什么办法解决这一问题?

mysql default-value alter-table

3
推荐指数
1
解决办法
4940
查看次数

SQLServer 为列添加默认值

我正在使用 MS SQL Server。我有一个带有“action_type”列的“action”表,我想为其设置默认值“to do”。我在 MS SQL Studio 中的 DDL 错误!我已经阅读了许多文章,试图找出我做错了什么,但似乎没有任何效果。DDL如下,表CREATE有效,ALTER失败。

CREATE TABLE "action"
( "action" INT IDENTITY(1,1)
, "name" VARCHAR(250) NOT NULL
, "owner" VARCHAR(50)
, "action_type" VARCHAR(50) NOT NULL
, "due_date" DATETIME
, "done_date" DATETIME
, "successful" BIT NOT NULL
, "job" INT
, "contract" INT
, "person" INT
, "description" VARCHAR(MAX)
, "deliverable" VARCHAR(MAX)
, "outcome" VARCHAR(MAX)
, "source" VARCHAR(50)
, "notes" VARCHAR(MAX)
);
ALTER TABLE "action"
ADD CONSTRAINT "df_action_0" DEFAULT "To Do" FOR "action_type";
Run Code Online (Sandbox Code Playgroud)

ALTER 语句返回错误 …

sql-server constraint default-value alter-table

3
推荐指数
1
解决办法
2028
查看次数

是否可以在 MySQL 5.7 中自动生成 Unix 毫秒时间戳

我在 MySQL 5.7 表中创建了一个created_time字段BIGINT,现在我想在插入记录时自动生成一个 Unix 毫秒时间戳。是否有可能做到这一点?我尝试了下面的代码,但失败了:

ALTER TABLE db.video_info MODIFY COLUMN created_time bigint(20) 
  DEFAULT (ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)) NULL;
Run Code Online (Sandbox Code Playgroud)

mysql timestamp default-value

3
推荐指数
1
解决办法
393
查看次数

将虚拟数据插入到具有主键整数字段 GENERATED ALWAYS AS IDENTITY 的空表中

我正在尝试使用虚拟数据生成虚拟表,以测试某些 SQL 任务的性能。

基于这个旧线程:有没有办法将多行插入到所有列都有默认值的表中?

我注意到,对于类型IDENTITY,不再可能使用建议的generate_series(1, N)解决方案用虚拟数据填充表。

那么,如何将 1'000 个虚拟数据插入到下表 (PG 14) 中,从而利用字段的默认值name而不覆盖字段的系统值id

CREATE TABLE foo (
    id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    name TEXT DEFAULT md5(random()::text)
);
Run Code Online (Sandbox Code Playgroud)

尝试以下操作失败:

INSERT INTO foo (id) 
  SELECT generate_series(1, 1000);

-- which results in:
ERROR:  cannot insert a non-DEFAULT value into column "id"
DETAIL:  Column "id" is an identity column defined as GENERATED ALWAYS.
HINT:  Use OVERRIDING SYSTEM VALUE to override.
SQL state: 428C9 …
Run Code Online (Sandbox Code Playgroud)

postgresql default-value

3
推荐指数
1
解决办法
4450
查看次数

如何将 TIMESTAMP 的默认值设置为未来日期?

我知道我可以像这样使用当前时间戳设置默认值

... DEFAULT CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

有没有办法根据当前时间戳设置具有固定单位数量的列?

... DEFAULT CURRENT_TIMESTAMP + 10 days?
Run Code Online (Sandbox Code Playgroud)

mysql timestamp default-value

2
推荐指数
1
解决办法
6204
查看次数