标签: unique-constraint

使用多个表中的数据的唯一约束(SQL/SQLAlchemy)

调用的顶级类Parametric用于创建可以具有与之关联的参数的对象:

class Parametric(object):
 def __init__(self, name):
  self.name = name
  self.pars = []

class Foo(Parametric):
 def __init__(self, name, prop):
  self.prop = prop
  Parametric.__init__(self, name)

class Bar(Parametric):
 def __init__(self, name, prop):
  self.prop = prop
  Parametric.__init__(self, name)
Run Code Online (Sandbox Code Playgroud)

我使用SQLAlchemy作为我的ORM引擎.

我想强加一个UNIQUE约束来确保组合(name, prop)对于给定的类是唯一的(例如,只能Foo调用一个实例"my_foo"并且具有prop值,比如说"my_prop"),但是我没有看到如何引用name列的ParametricFoo表格UNIQUECONSTRAINT部分.

这种独特性是否可以通过FOREIGN KEY指令施加?

python sql sqlalchemy unique-constraint

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

是否必须对DB有独特的约束?

我最近一直在想.假设我们正在使用JSF + Spring + JPA/Hibernate(或任何其他技术)进行webapp,并且假设我们有一个"用户"实体.我们希望用户拥有唯一的登录信息.如果我们想要这样做,那么我们可以在"登录"列上放置一个@UniqueConstraint,但是我们的应用程序仍然需要在用户注册期间检查用户输入是否有效(唯一),没有它,并且只有数据库约束我们只会得到一个错误.这让我想到,DB约束真的有必要/有帮助吗?只有当有人试图破解我们时,我能想到的唯一两次才会想到(但我想我们的应用程序应该是SQL注入证明)或者我们尝试手动更改数据库内容(不应该真的发生了).实际上现在我考虑一下,DB约束在一般必要/良好实践中是什么?就像弦乐的长度等.

database database-design constraints unique-constraint

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

实体数据模型,唯一索引

在我的实体数据模型中,我有一个实体,其中一个属性作为主键,另一个属性也具有唯一值,因此我想在该另一个属性上创建唯一索引.这种情况与具有PersonID和PersonSSN字段的Person实体非常相似.

有没有办法在设计器或edmx文件中指定在从模型生成数据库时应该在属性上创建这样的索引?

entity-framework unique-constraint edmx

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

Oracle'INSERT ALL'忽略重复项

我有一个数据库表,它有一个唯一的约束(唯一(DADSNBR, DAROLEID)对).我将同时在这个表中插入多个值,所以我想使用一个查询完成它 - 我假设这将是更快的方式.我的查询是这样的:

INSERT ALL
    INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 1)
    INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 2)
    INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 3)
    INTO ACCESS (DADSNBR, DAROLEID) VALUES (68, 4)
SELECT 1 FROM DUAL
Run Code Online (Sandbox Code Playgroud)

由于语句中的某些条目与数据库中已存在的条目重复,因此整个插入失败并且未插入任何行.

有没有办法忽略唯一约束失败的情况,只需插入唯一的那些,而不必将其拆分成单独的INSERT语句?

编辑:我意识到我可能不想这样做,但我仍然很好奇它是否可能.

oracle insert duplicates unique-constraint

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

PostgreSQL 约束,在提交时检查,而不是更早检查

是否可以在 PostgreSQL 中创建唯一索引或其他类型的约束,这将在事务 COMMIT 上进行检查,而不是提前一毫秒?

我需要一对 (record_id, ordering) 的索引,因此我确保在给定的 record_id 中只有一个且不超过一个记录具有相同的顺序。问题出在哪里?好吧,问题在于我使用的 Web 框架处理重新排序项目的方式。看起来,当移动一个项目时,当其排序顺序发生更改时,框架会使用新的排序值写入新项目,然后不久之后它会更新另一个项目,从而创建一种临时情况,其中多个记录具有相同的订购值。重新排序所有内容后,所有记录都会更新,并且在事务提交时,一切都应该再次正常。

如果重要的话,我正在使用 PostgreSQL 10。

sql postgresql constraints unique-index unique-constraint

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

SQL Server - 唯一索引与唯一约束 - 回复。重复值

唯一索引可确保索引键列中的值是唯一的。唯一约束 保证不能将重复值插入到创建约束的列中。创建唯一约束时,会在列上自动创建相应的唯一索引。

问题

  1. 如果我们在列上有唯一索引并且没有唯一约束,是否可以插入重复值?
  2. 列上任何现有重复项怎么样 - 它是否允许创建唯一索引或唯一约束?

sql-server unique-index unique-constraint

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

如何向ADO.NET实体添加约束?

我知道如何将一组字段标记为ADO.NET实体中的主键,但我还没有找到声明唯一约束或检查约束的方法.

设计器或框架上是否缺少此功能?

entity-framework ado.net-entity-data-model unique-constraint entity-framework-4

7
推荐指数
1
解决办法
2003
查看次数

postgresql 分区上的唯一索引

我有一个名为 cdrs 的表:

CREATE TABLE cdrs (
    i_cdr bigint NOT NULL,
    i_cdrs_connection bigint NOT NULL,
    i_call bigint NOT NULL,
    customer_name character varying(156) NOT NULL,
    client_name_id character varying(256) NOT NULL,
    connection_name character varying(156) NOT NULL,
    vendor_name_id character varying(256) NOT NULL,    
    setup_time timestamp with time zone NOT NULL,
    c_result_id bigint NOT NULL,
    v_result_id bigint NOT NULL
    );
Run Code Online (Sandbox Code Playgroud)

现在,在插入父表时使用触发器继承创建分区并执行更新。该函数尝试插入,如果所需的分区不存在,则使用索引创建它。我们在 i_cdrs_connection 上为每个分区创建了唯一索引,也在父分区上创建了唯一索引。

CREATE UNIQUE INDEX i_cdrs_connection ON cdrs(i_cdrs_connection)

CREATE OR REPLACE FUNCTION cdrs_insert_trigger() RETURNS TRIGGER AS $$
BEGIN
    EXECUTE 'INSERT INTO cdrs_'|| to_char(NEW.setup_time, 'YYYY_MM_DD') …
Run Code Online (Sandbox Code Playgroud)

postgresql unique unique-constraint

7
推荐指数
1
解决办法
9905
查看次数

在Mssql中对UNIQUE KEY约束重复空值违规

MS SQL Server不会忽略空值并将其视为UNIQUE KEY约束的违规,但我所知道的是UNIQUE KEY与接受空值的主键不同.

Violation of UNIQUE KEY constraint 'AK_UserName'. Cannot insert duplicate key in object 'dbo.users'. The duplicate key value is (<NULL>).
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?

database sql-server null unique-constraint

7
推荐指数
1
解决办法
8397
查看次数

PostgreSQL:唯一约束或唯一索引

如果列包含唯一约束并且我想按此列快速搜索,我应该创建唯一索引吗?

例如,我有一个userslogin应该是唯一的表。我需要按login列快速搜索用户。

这是最好的方法:

  1. 创建一个唯一约束(它创建内部唯一索引 - 是否在选择查询中使用WHERE login = 'something'?)
  2. 创建唯一索引
  3. 创建唯一索引和唯一约束(索引重复内部索引?)

第二种情况login对于未锁定的用户是唯一的(列locked = false)。Postgres 不支持部分条件。我应该创建唯一的条件索引和部分索引还是仅部分索引就足够了?

还有一个问题:我应该为带有外键的列创建新索引吗?例如:users.employee_id涉及到employees.id,我应该employee为优化查询在列上创建索引SELECT * FROM users WHERE employee_id = ....吗?优化引擎何时使用内部索引,何时不使用?

sql postgresql foreign-keys unique-index unique-constraint

7
推荐指数
1
解决办法
3872
查看次数