标签: constraints

Ruby on Rails:如何使用迁移向现有列添加非空约束?

在我的Rails(3.2)应用程序中,我的数据库中有一堆表,但我忘了添加一些非空约束.我已经google了但我找不到如何编写一个向现有列添加非null的迁移.

TIA.

database migration ruby-on-rails constraints notnull

124
推荐指数
3
解决办法
4万
查看次数

允许MySQL中为空值的唯一约束

我有一个存储产品代码的字段.代码是唯一的,但有些产品根本没有代码.我不能发明代码,因为那些是提供者代码.

这种约束在MySQL中是否可行?

我是一个存储过程和触发器的菜鸟,所以如果解决方案涉及其中一个,请耐心等待.

更新:列不是空的.这就是我无法做到这一点的原因.

mysql database-design constraints

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

SQLite中的"如果不存在则插入"语句

我有一个SQLite数据库.我试图在表中插入值(users_id,lessoninfo_id),前提bookmarks是它们之前不存在.

INSERT INTO bookmarks(users_id,lessoninfo_id) 
VALUES(
    (SELECT _id FROM Users WHERE User='"+$('#user_lesson').html()+"'),
        (SELECT _id FROM lessoninfo 
        WHERE Lesson="+lesson_no+" AND cast(starttime AS int)="+Math.floor(result_set.rows.item(markerCount-1).starttime)+") 
        WHERE NOT EXISTS (
            SELECT users_id,lessoninfo_id from bookmarks 
            WHERE users_id=(SELECT _id FROM Users 
            WHERE User='"+$('#user_lesson').html()+"') AND lessoninfo_id=(
                SELECT _id FROM lessoninfo
                WHERE Lesson="+lesson_no+")))
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误说:

db error附近的语法.

sqlite constraints sql-insert

115
推荐指数
4
解决办法
13万
查看次数

显示Oracle SQL中表的所有约束的名称

我已经为我在Oracle SQL中创建的多个表的每个约束定义了一个名称.

问题是要删除特定表的列的约束,我需要知道我为每个约束提供的名称,这是我忘记的.

如何列出我为表的每列指定的约束的所有名称?

这样做有什么SQL语句吗?

sql oracle constraints oracle11g

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

从通用基类继承,应用约束,并在C#中实现接口

这是一个语法问题.我有一个泛型类,它继承自泛型基类,并将约束应用于其中一个类型参数.我还希望派生类实现一个接口.对于我的生活,我似乎无法弄清楚正确的语法.

这就是我所拥有的:

DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { ... }
Run Code Online (Sandbox Code Playgroud)

首先想到的是:

DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { ... }
Run Code Online (Sandbox Code Playgroud)

但这是不正确的,因为这导致T2需要实现IBar和IFoo,而不是DerivedFoo来实现IFoo.

我尝试了一些谷歌搜索,使用冒号,分号等,但我已经调整了.我确定答案很简单.

c# generics inheritance interface constraints

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

按约束名称获取表名

Oracle约束名称是已知的.

如何查找应用此约束的表的名称?

oracle constraints

102
推荐指数
2
解决办法
12万
查看次数

如何在NULL列上创建唯一索引?

我正在使用SQL Server 2005.我想将列中的值限制为唯一,同时允许NULLS.

我当前的解决方案涉及视图上的唯一索引,如下所示:

CREATE VIEW vw_unq WITH SCHEMABINDING AS
    SELECT Column1
      FROM MyTable
     WHERE Column1 IS NOT NULL

CREATE UNIQUE CLUSTERED INDEX unq_idx ON vw_unq (Column1)
Run Code Online (Sandbox Code Playgroud)

有更好的想法吗?

sql sql-server indexing constraints unique

98
推荐指数
3
解决办法
9万
查看次数

在创建表时声明默认约束

我通过编写代码而不是使用GUI在Microsoft SQL Server 2000中创建一个新表,我正在尝试学习如何"手动方式".

这是我实际使用的代码,它工作正常:

CREATE TABLE "attachments"
(
    "attachment_id" INT NOT NULL,
    "load_date" SMALLDATETIME NOT NULL,
    "user" VARCHAR(25) NOT NULL,
    "file_name" VARCHAR(50) NOT NULL,
    CONSTRAINT "pk_attachments" PRIMARY KEY ("attachment_id"),
    CONSTRAINT "fk_users" FOREIGN KEY ("user") REFERENCES "users" ("user"),
    CONSTRAINT "ch_load_date" CHECK ("load_date" < GETDATE())
)
Run Code Online (Sandbox Code Playgroud)

我已经自己指定了主键,外键和检查约束,因为这样我可以为它们定义一个名称,否则将它们声明为内联会使SQL Server生成一个随机名称,而我并不"喜欢"它.

当我尝试声明默认值约束时出现问题:查看Internet上的信息以及Microsoft SLQ Server Management Studio如何创建它,我了解它可以内联和单独创建:

"load_date" SMALLDATETIME NOT NULL DEFAULT GETDATE()
Run Code Online (Sandbox Code Playgroud)

要么

CONSTRAINT "df_load_date" DEFAULT GETDATE() FOR "load_date"
Run Code Online (Sandbox Code Playgroud)

内联方法工作正常,但它像往常一样为constaint生成一个随机名称,独立方法抛出错误,说Incorrect syntax near 'FOR'..

此外,如果我创建表然后ALTER它,该命令工作:

ALTER TABLE "attachments"
ADD CONSTRAINT "df_load_date" …
Run Code Online (Sandbox Code Playgroud)

t-sql default constraints sql-server-2000

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

Postgresql:有条件的唯一约束

我想添加一个约束,该约束仅在表的一部分中强制列的唯一性.

ALTER TABLE stop ADD CONSTRAINT myc UNIQUE (col_a) WHERE (col_b is null);
Run Code Online (Sandbox Code Playgroud)

WHERE上面的部分是一厢情愿的想法.

这样做的任何方式?或者我应该回到关系绘图板?

postgresql constraints unique-constraint

87
推荐指数
2
解决办法
3万
查看次数

什么是数据库约束?

什么是数据库约束的明确定义?为什么约束对数据库很重要?有哪些类型的约束?

sql sql-server rdbms constraints

86
推荐指数
3
解决办法
16万
查看次数