标签: unique-constraint

在Hibernate JPA2上使用唯一约束

如何在hibernate POJO上实现我的独特约束?假设数据库不包含任何数据库.

我已经看到了@Column()注释中的唯一属性,但我无法让它工作?
如果我想将此约束应用于多个列,该怎么办?

java hibernate unique unique-constraint

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

Sqlite NULL和唯一?

我注意到我可以在具有UNIQUE约束的列中具有NULL值: UNIQUE(col)

这会在某些情况下产生任何问题吗?

sql sqlite null unique unique-constraint

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

跨多个表的SQL唯一约束

我试图在多个表中创建一个唯一约束.我在这里找到了类似的问题,但是他们并没有完全捕捉到我想要做的精神.

作为一个例子,我有三个表,t_Analog,t_Discrete,t_Message

CREATE TABLE t_Analog(
    [AppName] [nvarchar](20) NOT NULL,
    [ItemName] [nvarchar](32) NOT NULL,
    [Value] [float] NOT NULL,
    CONSTRAINT [uc_t_Analog] UNIQUE(AppName, ItemName)
)

CREATE TABLE t_Discrete(
    [AppName] [nvarchar](20) NOT NULL,
    [ItemName] [nvarchar](32) NOT NULL,
    [Value] [bit] NOT NULL,
    CONSTRAINT [uc_t_Discrete] UNIQUE(AppName, ItemName)
)

CREATE TABLE t_Message(
    [AppName] [nvarchar](20) NOT NULL,
    [ItemName] [nvarchar](32) NOT NULL,
    [Value] [nvarchar](256) NOT NULL,
    CONSTRAINT [uc_t_Message] UNIQUE(AppName, ItemName)
)
Run Code Online (Sandbox Code Playgroud)

我的目标是在所有3个表中使AppName和ItemName唯一.例如,应用程序X中的项目名称Y不能同时存在于模拟和离散表中.

请注意,这个例子是设计的,每个Type的实际数据是不同的,大到足以组合表并添加一个非常难看的Type列.

如果您对此方法有任何建议,我很乐意听到他们的意见!

----开始编辑2012-04-26 13:28 CST ----

谢谢大家的答案!

似乎可能有理由修改此数据库的架构,这很好.

将表组合到单个表中实际上并不是一个可行的选项,因为每个类型的列数量不超过30个(不幸的是,修改这些列不是一个选项).这可能导致每行中没有使用大部分列,这似乎是一个坏主意.

添加第4个表,如John Sikora和其他人提到的,可能是一个选项,但我想首先验证这一点.

修改架构为:

CREATE TABLE t_AllItems(
    [id] [bigint] …
Run Code Online (Sandbox Code Playgroud)

sql-server database-design unique-constraint

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

Django - 在重复键上保存()更新

我的应用程序很少,允许用户对视频进行评级.

用户只能评价一次.所以我已经定义了模型的唯一性.

但他应该能够改变他的比率.所以save()应该更新重复键

class VideoRate(models.Model):
  """Users can Rate each Video on the criterias defined for the topic"""
  user = models.ForeignKey(User)
  video = models.ForeignKey(VideoFile)
  crit = models.ForeignKey(VideoCrit)
  rate = models.DecimalField(max_digits=2, decimal_places=1, choices=RATE_CHOICES)
  class Meta:
    unique_together = (('user', 'video', 'crit'),)
    verbose_name = 'Video Rating'
Run Code Online (Sandbox Code Playgroud)

如果我

rate = VideoRate(user_id=1, video_id=1, crit_id=1, rate=2)
rate.save()
Run Code Online (Sandbox Code Playgroud)

它正在保存评级,但如果我

rate = VideoRate(user_id=1, video_id=1, crit_id=1, rate=3)
rate.save()
Run Code Online (Sandbox Code Playgroud)

我得到了正常的错误

IntegrityError: (1062, "Duplicate entry '1-1-1' for key 'user_id'")
Run Code Online (Sandbox Code Playgroud)

即使我使用force_update=True(因为仅基于主键)

有没有办法更新评级,如果它已经存在而不必检查之前的数据?

django save insert-update unique-constraint

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

SQL:如何根据两个字段查找重复项?

我在Oracle数据库表中有行,对于两个字段的组合应该是唯一的,但是没有在表上设置唯一约束,所以我需要使用SQL找到所有违反约束的行.不幸的是,我的微薄SQL技能无法胜任.

我的表有三列相关:entity_id,station_id和obs_year.对于每一行,station_id和obs_year的组合应该是唯一的,我想通过SQL查询将它们刷出来查明是否存在违反此行的行.

我尝试了以下SQL(由前一个问题提出),但它对我不起作用(我得到ORA-00918列模糊定义):

SELECT
entity_id, station_id, obs_year
FROM
mytable t1
INNER JOIN (
SELECT entity_id, station_id, obs_year FROM mytable 
GROUP BY entity_id, station_id, obs_year HAVING COUNT(*) > 1) dupes 
ON 
t1.station_id = dupes.station_id AND
t1.obs_year = dupes.obs_year
Run Code Online (Sandbox Code Playgroud)

有人可以建议我做错了什么,和/或如何解决这个问题?

sql oracle unique unique-constraint ora-00918

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

如何从表列中删除唯一约束?

我有一个表'users','login'列定义为:

[login] VARCHAR(50) UNIQUE NOT NULL
Run Code Online (Sandbox Code Playgroud)

现在我想使用SQL脚本删除这个唯一的约束/索引.我在我的本地数据库中找到了它的名字UQ_ users _7D78A4E7,但我想它在另一个数据库上有一个不同的名字.

放弃这种独特约束的最佳方法是什么?或至少任何......

谢谢.

sql database sql-server-2005 unique-constraint non-clustered-index

20
推荐指数
4
解决办法
9万
查看次数

UNIQUE,UNIQUE KEY和CONSTRAINT'name'UNIQUE有什么区别?

我有一个基本的"用户"表,我想在MySQL中创建.

我不希望在数据库中出现重复的电子邮件或重复的用户名.

  • 在创建桌子时防止这种情况的最佳方法是什么?
  • 以下是有什么区别的:

1. UNIQUE(用户名),UNIQUE(电子邮件),

2. UNIQUE KEY(用户名),UNIQUE KEY(电子邮件),

3. CONSTRAINT ucons_login UNIQUE(用户名,电子邮件),

我假设其中一些是同义词,但我一直在网上阅读相互矛盾的信息并且正在寻求确认.

我希望有人可以提供帮助.

SQL:

CREATE TABLE users (
  user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  username VARCHAR(30) NOT NULL,
  pass CHAR(40) NOT NULL,
  first_name VARCHAR(20) NOT NULL,
  last_name VARCHAR(40) NOT NULL,
  email VARCHAR(60) NOT NULL,
  registration_date DATETIME NOT NULL,
  user_level TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
  active CHAR(32),
  PRIMARY KEY (user_id),
  UNIQUE (username),
  UNIQUE (email),
  INDEX login (email, pass),
  INDEX full_name (last_name, first_name)
) ENGINE=INNODB;
Run Code Online (Sandbox Code Playgroud)

mysql database-design unique create-table unique-constraint

19
推荐指数
1
解决办法
7312
查看次数

Entity Framework 5是否支持唯一约束?

想知道Entity Framework 5是否支持对实体属性的唯一约束?如果是这样,我如何指定属性应该是唯一的?

unique-constraint .net-4.5 entity-framework-5

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

我可以有条件地执行唯一性约束吗?

我的数据库包含一个用户表.每个活跃用户都有唯一的用户名.我希望能够停用用户并释放他们正在使用的用户名,但将它们保存在同一个表中.

有没有办法只有条件地强制执行唯一性约束?

mysql unique-constraint

19
推荐指数
3
解决办法
5470
查看次数

在Liquibase中添加复合唯一约束

我正在创建一个包含3列的链接表; id,product_id,tournament_id.

将uniqueConstraint添加到"id"列是微不足道的,但我想确保任何一对(product_id,tournament_id)都是唯一的.

Liquibase.org上的例子显示

<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint catalogName="cat"
        columnNames="id, name"
        constraintName="const_name"
        deferrable="true"
        disabled="true"
        initiallyDeferred="true"
        schemaName="public"
        tableName="person"
        tablespace="A String"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

但是有可能在一个<createTable>街区内完成吗?

另外,只是为了确认; 这会在两列上创建复合唯一约束,还是会创建两个独立的唯一约束?

unique-constraint liquibase

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