标签: default-constraint

用于添加默认约束的命令

似乎至少有两种方法可以使用直接T-SQL添加默认约束.我是否正确,下面两者之间的唯一区别是第二种方法专门为约束创建一个名称,第一种方法有一个由SQL Server生成?

ALTER TABLE [Common].[PropertySetting] ADD DEFAULT ((1)) FOR [Active];
ALTER TABLE [Common].[PropertySetting] ADD CONSTRAINT [DF_PropertySetting_Active) DEFAULT ((1)) FOR [Active];
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server default-constraint

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

默认为空字符串的列

有没有办法通过SQL语句确保列的默认值是空字符串''而不是NULL

mysql sql default-constraint

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

如何将默认值添加到现有列?

我的SQL Server数据库中有一个现有列.我已经尝试了我能想到的所有内容,但无法将默认值添加到列中.在每个其他数据库中有效的是

alter table mytable 
  alter column mycolumn set default(now()) --mycolumn is a datetime
Run Code Online (Sandbox Code Playgroud)

我如何在SQL Server中执行此操作?

我得到的确切语法的错误是 incorrect syntax near the keyword 'set'

sql t-sql sql-server alter-table default-constraint

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

如何在INSERT期间让EF 6在数据库上处理DEFAULT CONSTRAINT

我是EF的新手(这是我的第一周),但对数据库或编程并不陌生.其他人也提出了类似的问题,但我觉得它没有被问到正确的细节,或者解释得非常需要解释,所以我走了.

问题: 如何让Entity Framework正确处理数据库中执行INSERT时定义了DEFAULT CONSTRAINT的列?这意味着,如果我在插入操作期间没有在模型中提供值,如何让EF从其生成的TSQL INSERT命令中排除该列,以便数据库定义的DEFAULT CONSTRAINT可以工作?

背景

我有一个我创建的简单表,只是为了测试Entity Framework 6(EF6)及其与SQL Server能够更新的列的交互.这使用了IDENTITY,TIMESTAMP,COMPUTED和一些应用了DEFAULT CONSTRAINT的列.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[DBUpdateTest](
    [RowID] [int] IDENTITY(200,1) NOT NULL,
    [UserValue] [int] NOT NULL,
    [DefValue1] [int] NOT NULL,
    [DefValue2null] [int] NULL,
    [DefSecond] [int] NOT NULL,
    [CalcValue]  AS 
        (((([rowid]+[uservalue])+[defvalue1])+[defvalue2null])*[defsecond]),
    [RowTimestamp] [timestamp] NULL,
    CONSTRAINT [PK_DBUpdateTest] PRIMARY KEY CLUSTERED 
    (
        [RowID] ASC
    )
    WITH 
    (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) 
) 
GO
ALTER TABLE [dbo].[DBUpdateTest] …
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework default-constraint

22
推荐指数
1
解决办法
7957
查看次数

添加DATETIME列的Alter Table语法是什么样的?

当我想将默认设置为默认值时,我无法找到将DATETIME列添加到mysql表的语法 - 示例 - 2011-01-26 14:30:00

有谁知道这个语法是什么样的?

这就是我所拥有的

ADD COLUMN new_date DATETIME AFTER preceding_col,
Run Code Online (Sandbox Code Playgroud)

谢谢

mysql sql alter-table default-constraint

21
推荐指数
2
解决办法
6万
查看次数

为什么在现有列中添加可为空的默认约束需要这么长时间?

我有一个大约有4亿行的现有表.该表包含一组bit名为IsModified,IsDeleted和IsExpired 的列.

CREATE TABLE [dbo].[ActivityAccumulator](
    [ActivityAccumulator_SK] [int] IDENTITY(1,1) NOT NULL,
    [ActivityAccumulatorPK1] [int] NULL,
    [UserPK1] [int] NULL,
    [Data] [varchar](510) NULL,
    [CoursePK1] [int] NULL,
    [TimeStamp] [datetime] NULL,
    [SessionID] [int] NULL,
    [Status] [varchar](50) NULL,
    [EventType] [varchar](40) NULL,
    [DWCreated] [datetime] NULL,
    [DWModified] [datetime] NULL,
    [IsModified] [bit] NULL,
    [DWDeleted] [datetime] NULL,
    [IsDeleted] [bit] NULL,
    [ActivityAccumulatorKey] [bigint] NULL,
    [ContentPK1] [bigint] NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我想在表中添加一个默认约束,对于所有将来插入的行,将默认那些位列为0.我试图通过以下命令执行此操作:

ALTER TABLE ActivityAccumulator 
ADD CONSTRAINT DF_ActivityAccumulatorIsExpired DEFAULT (0) FOR IsExpired

ALTER TABLE ActivityAccumulator 
ADD CONSTRAINT DF_ActivityAccumulatorIsDeleted DEFAULT (0) FOR …
Run Code Online (Sandbox Code Playgroud)

sql default-constraint sql-server-2012

10
推荐指数
1
解决办法
862
查看次数

当源DataTable行具有DBNull.Value时,SqlBulkCopy进入表,默认列值失败

更新:这是我的解决方案

我有一个表定义为:

CREATE TABLE [dbo].[csvrf_References]
(
    [Ident] [int] IDENTITY(1,1) NOT NULL,
    [ReferenceID] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid()),
    [Type] [nvarchar](255) NOT NULL,
    [Location] [nvarchar](1000) NULL,
    [Description] [nvarchar](2000) NULL,
    [CreatedOn] [datetime] NOT NULL DEFAULT (getdate()),
    [LastUpdatedOn] [datetime] NOT NULL DEFAULT (getdate()),
    [LastUpdatedUser] [nvarchar](100) NOT NULL DEFAULT (suser_sname()),

    CONSTRAINT [PK_References] PRIMARY KEY NONCLUSTERED ([ReferenceID] ASC)
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

我有一个DataTable与表列名和数据类型匹配的列.在DataTable与填写DBNull.ValueCreatedOn,LastUpdatedOnLastUpdatedUser. ReferenceID已生成.当我调用以下代码时,我得到以下错误.

码:

SqlBulkCopy bulkCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, bulkCopyTran);
bulkCopy.DestinationTableName …
Run Code Online (Sandbox Code Playgroud)

c# sql-server null sqlbulkcopy default-constraint

6
推荐指数
1
解决办法
1万
查看次数

将NULL值传递给LINQ中的DateTime字段

我的数据库表是这样的

CREATE TABLE MYBUDGET.tbl_CurrentProperty
(
    [PropID]            INT             NOT NULL  IDENTITY(1,1),
    [UpdatedOn]         DATETIME        NOT NULL,
    [Amount]            MONEY           NOT NULL,
    [Remarks]           VARCHAR(100)    NOT NULL,
)
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT PK_CurrentProperty_PropID PRIMARY KEY ([PropID])
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT DF_CurrentProperty_UpdatedOn DEFAULT (DATEADD(MINUTE,30,DATEADD(HOUR, 5, GETUTCDATE()))) FOR [UpdatedOn]
ALTER TABLE MYBUDGET.tbl_CurrentProperty ADD CONSTRAINT CK_CurrentProperty_Amount CHECK([Amount] > -1)
GO
Run Code Online (Sandbox Code Playgroud)

我正在使用LINQ to SQL.在C#中,我只需要传递[Amount]和[Remarks]字段,其他字段必须使用其默认值([PropID]和[UpdatedOn]).

在C#中我创建了如下的tbl_CurrentProperties对象,

tbl_CurrentProperties currentProperties = new tbl_CurrentProperties();
currentProperties.Amount = 50.00M;
currentProperties.Remarks = "remarks";
Run Code Online (Sandbox Code Playgroud)

然后将对象提交到数据上下文.但在这里,Linq分配'1/1/0001 12:00:00 AM'了UpdatedOn字段.但这违反了SQL日期时间范围1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 …

c# sql datetime linq-to-sql default-constraint

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

如何从Db2中的列中删除默认约束

我有一个表STUDENT_TB,它有一个STUDENT_ID,NAME,AGE列.我添加了一个包含以下命令的列: -

alter table STUDENT_TB add DOB TIMESTAMP NOT NULL DEFAULT CURRENT TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

对于DOB列,我不希望它为null.现在我需要删除该默认约束.

我试过搜索但没有取得任何成功.

问候.

sql db2 default-constraint

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

如何使用 Entity Framework Core 在具有默认值的布尔值上设置另一个值?

我在这个问题中遇到了完全相同的问题: How to override SQL Server default value constraint on a boolean when inserting new entity? [关闭]

像他一样,我从客户端到控制器获得了布尔值的良好值,false,但_context.SaveChanges();由于 Entity Framework 和数据库中的默认值约束,它通过调用设置为 true 。

但是:我正在使用 Entity Framework Core,我没有任何[DatabaseGenerated(DatabaseGeneratedOption.Computed)]注释可以删除来​​解决问题。

在我的 ApplicationDbContext.cs 中:

modelBuilder.Entity<myEntity>(entity =>
{
    entity.Property(e => e.Active).HasDefaultValueSql("1");
    //entity.Property(e => e.Active).HasDefaultValueSql<bool>("1"); // doesn't fix
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我的数据库中:

CREATE TABLE myEntity(
    Id      INTEGER IDENTITY(1,1) NOT NULL,
    ...
    Active  BIT NOT NULL CONSTRAINT DF_myEntity_Active DEFAULT 1
);
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id, Active, etc.")] Entity myEntity)
{
    if …
Run Code Online (Sandbox Code Playgroud)

c# sql-server boolean default-constraint entity-framework-core

5
推荐指数
3
解决办法
9095
查看次数

SQL Server数据库中的孤立约束

运行以下查询会导致客户端数据库中的所有约束.然而,在结果集几行似乎并不具有父,即parent_object_id = 0OBJECT_NAME(parent_object_id)回报NULL.

SELECT name, type_desc, OBJECT_NAME(parent_object_id), parent_object_id
FROM sys.objects
WHERE is_ms_shipped = 0
AND type_desc LIKE '%_CONSTRAINT'
Run Code Online (Sandbox Code Playgroud)

这是否意味着数据库中存在孤立约束?如果是这样,我该如何删除它们?

根据他们的名字,我可以看到他们是在结构发生大量变化之前的残羹剩饭.

sql-server default-constraint sql-drop

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

从默认约束中获取值

我需要将默认约束值从0更改为1.这可以通过以下方式轻松完成:

ALTER TABLE table DROP CONSTRAINT X
ALTER TABLE table ADD CONSTRAINT X default (1) for table.column
Run Code Online (Sandbox Code Playgroud)

问题是我每次在数据库上运行modelupdate时都不想删除并创建新约束.这就是为什么我想运行此代码,如果约束的值为0.

是否可以在SQL中检查默认约束的值,如果是,如何?

sql sql-server constraints default-constraint

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