Questions tagged «constraint»

一种声明性机制,例如检查或外键,用于在数据库中强制执行某些数据完整性规则。

6
什么时候应该使用唯一约束而不是唯一索引?
当我希望一列具有不同的值时,我可以使用约束 create table t1( id int primary key, code varchar(10) unique NULL ); go 或者我可以使用唯一索引 create table t2( id int primary key, code varchar(10) NULL ); go create unique index I_t2 on t2(code); 具有唯一约束的列似乎是唯一索引的良好候选者。 是否存在使用唯一约束而不使用唯一索引的已知原因?

3
PostgreSQL多列唯一约束和NULL值
我有一个如下表: create table my_table ( id int8 not null, id_A int8 not null, id_B int8 not null, id_C int8 null, constraint pk_my_table primary key (id), constraint u_constrainte unique (id_A, id_B, id_C) ); 我想(id_A, id_B, id_C)在任何情况下都与众不同。因此,以下两个插入必须导致错误: INSERT INTO my_table VALUES (1, 1, 2, NULL); INSERT INTO my_table VALUES (2, 1, 2, …

3
检查约束只有三列之一为非空
我有一个(SQL Server)表,其中包含3种类型的结果:FLOAT,NVARCHAR(30)或DATETIME(3个单独的列)。我想确保对于任何给定的行,只有一列具有结果,其他列为NULL。实现此目的最简单的检查约束是什么? 为此,本文试图将捕获非数字结果的功能改造为现有系统。在表上添加两个新列并添加约束以防止每行出现多个结果是最经济的方法,不一定是正确的方法。 更新:抱歉,数据类型为snafu。可悲的是,我不打算将指示的结果类型解释为SQL Server数据类型,而只是一般术语,现在已修复。

2
MySQL:如何检查与表相关的外键
如何在MySql中查看与表相关的外键? 背景:我想在MySql中删除具有外键约束的表。当我这样做时,我得到: Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails 我该如何删除与表相关的外键而使其他人离开。

2
PostgreSQL排除使用错误:数据类型整数没有默认的运算符类
在PostgreSQL 9.2.3中,我试图创建此简化表: CREATE TABLE test ( user_id INTEGER, startend TSTZRANGE, EXCLUDE USING gist (user_id WITH =, startend WITH &&) ); 但是我得到这个错误: ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class …


7
复制表格的完整结构
使用某些方法,当您创建表的副本时,会丢失索引,PK,FK等。例如,在SQL Server中,我可以说: select * into dbo.table2 from dbo.table1; 这只是表的简单副本;缺少所有索引/约束。如何复制表结构(不使用备份)? 我主要是希望手动执行此操作,但是如果不可能,我将接受任何解决方案。




3
如何在SQL中强制执行一次写入然后只读的数据库表?
可能吗 我的用例是一个分类帐表,要求一旦创建一条记录,它就应该是只读的,即没有人能够编辑或删除它。这仅适用于分类帐表和与之有直接关系的表-同一模式中的其他表将正常进行更新/删除。 我的理解是,出于数据完整性的目的,应将这些类型的约束应用于数据库层,但是我找不到一种干净的,被广泛接受的方式来做这—这是一个用例,我会做得更好在应用层? 理想的方法是在普通的SQL中执行此操作,以便与使用的数据库平台无关,因为这可能会发生变化,但是我意识到这可能要求太多,因此是否需要为了与平台相关,首选MySQL的某种风格。 谢谢!
28 mysql  constraint 

2
“ ibfk”在MySQL中代表什么?
如果我在phpmyadmin中为表“ photos”创建外键约束,则稍后会看到该约束名为“ photos_ibfk_1”,下一个约束名为“ photos_ibfk_2”,依此类推。由此,我得出[tablename] _ibfk_constraintIndex为MySQL中数据库约束的约定。它是否正确?IBFK代表什么?

3
在数据库中强制执行“至少一个”或“完全一个”的约束
假设我们有用户,每个用户可以有多个电子邮件地址 CREATE TABLE emails ( user_id integer, email_address text, is_active boolean ) 一些样本行 user_id | email_address | is_active 1 | foo@bar.com | t 1 | baz@bar.com | f 1 | bar@foo.com | f 2 | ccc@ddd.com | t 我要强制执行一个约束,即每个用户都只有一个活动地址。如何在Postgres中做到这一点?我可以这样做: CREATE UNIQUE INDEX "user_email" ON emails(user_id) WHERE is_active=true; 这样做可以防止用户拥有多个活动地址,但我相信不能防止其所有地址都设置为false。 如果可能的话,我宁愿避免使用触发器或pl / …

4
检查约束不起作用?
我有下表。 create table test ( id smallint unsigned AUTO_INCREMENT, age tinyint not null, primary key(id), check (age<20) ); 问题在于该CHECK约束不适用于“年龄”列。例如,当我为年龄字段插入222时,MySQL接受它。
23 mysql  constraint 

4
为什么Postgres会生成一个已经使用的PK值?
我正在使用Django,偶尔我会收到此错误: IntegrityError:重复的键值违反了唯一约束“ myapp_mymodel_pkey” 详细信息:键(id)=(1)已存在。 实际上,我的Postgres数据库确实有一个myapp_mymodel对象,其主键为1。 为什么Postgres会再次尝试使用该主键?或者,这很可能是我的应用程序(或Django的ORM)引起的吗? 刚刚,此问题连续发生了3次。我发现的是,对于给定的表,它确实发生了一次或多次,然后不再发生。它似乎在每个表完全停止运行几天之前就发生了,每个表至少发生一分钟左右才发生,并且只是间歇地发生(并非所有表都立即发生)。 这个错误是如此断断续续的事实(在2周内仅发生了3次左右-数据库上没有其他负载,只是我测试了我的应用程序)使我非常警惕低级问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.