是否可以将 varchar 列作为具有“a”和“a”等值的主键,在 MS SQL Server 2008 中总是给出此错误“违反主键约束”。在 Oracle 中不会给出任何错误。顺便说一句,我没有以这种方式实现,我只是尝试将数据从 oracle 迁移到 sql server。
问候
sql-server primary-key unique-key unique-constraint sql-server-2008
我正在尝试在oracle数据库上创建一个约束,该约束说明如下:
如果column1 == someValue那么所有条目的组合column2和column3必须是唯一的column1 == someValue
我熟悉unique和check约束的概念,并且我尝试用这些结构表达约束.但是,我似乎找不到包含条件的方法.这就是为什么我想知道它是否可能.
我想要创建约束的表是由Hibernate映射以下类层次结构创建的(为简洁起见,大多数属性都被省略):
class MyClass {
String name;
MyClass parent;
}
class MySubClass extends MyClass {
String businessValue;
}
Run Code Online (Sandbox Code Playgroud)
使用单个表策略映射类,并为每种类型使用不同的鉴别器值.客户要求对于MySubClass名称和父组合的所有实例必须是唯一的(column1将是鉴别器值).通过表约束在父类上强制执行这样的约束会很容易.但是,该约束必须仅适用于MySubClass.
在使用Hibernate Validator等框架将数据输入数据库之前,可以验证数据.但由于验证无论如何都需要数据库访问,因此数据库约束似乎是更节省性能的方法.
我在 SQL Server 2008 R2 中有 3 个表,如下所示:

一个公司可能有许多 LSP。一个 LSP 可能有许多 SERVICE。
而且我需要确保 SERVICE_CODE 唯一标识公司内的服务记录。换句话说,COMPANY_ID + SERVICE_CODE 应该在整个系统中唯一标识一条SERVICE 记录。
例如:COMPANY-A 可能没有具有相同 SERVICE_CODE 的 2 个服务(具有 2 个不同的 SERVICE_ID)。但是 COMPANY-A 和 COMPANY-B 可能都有 2 个独立的 SERVICES(同样,具有不同的 SERVICE_ID),SERVICE_CODE = "PREMIUM"。
我需要这样的东西:
alter table "SERVICE"
add constraint "SERVICE_Index01"
unique ("COMPANY_ID", "SERVICE_CODE")
Run Code Online (Sandbox Code Playgroud)
但是(显然)这会失败,因为 COMPANY_ID 列不在 SERVICE 表中。
在此先感谢您的帮助。
我有一个名为 customer 的休眠实体,其中包含有关客户的信息。在我的方法中,我将客户详细信息作为需要插入数据库的参数。因此,要删除重复条目,我会检查该客户是否已存在于 db 中。但问题是,如果在同一时刻使用相同的客户信息对相同的方法进行两次调用,那么我会收到违反约束的错误。我认为 saveOrupdate() 会解决这个问题,但它没有。有人可以为这种情况提出解决方案。
我正在尝试检查将要插入系统的房间在该日期是否已经租用。我已经考虑过计算与房间号和日期匹配的行,然后回滚事务。但是我收到以下错误,即使我已经更改了代码以引发用户定义的异常:
Run Code Online (Sandbox Code Playgroud)ERROR: cannot begin/end transactions in PL/pgSQL HINT: Use a BEGIN block with an EXCEPTION clause instead. CONTEXT: PL/pgSQL function "checkRoom"() line 17 at SQL statement
CREATE OR REPLACE FUNCTION "checkRoom"() RETURNS TRIGGER AS
$BODY$
DECLARE
counter integer;
BEGIN
SELECT COUNT("num_sesion")
FROM "Sesion"
INTO counter
WHERE "Room_Name"=NEW."Room_Name" AND "Date"=NEW."Date";
IF (counter> 0) THEN -- Probably counter>1 as it's triggered after the transaction..
raise notice 'THERE'S A ROOM ALREADY!!';
raise exception 'The room is rented at that date';
END IF;
RETURN …Run Code Online (Sandbox Code Playgroud) 我有一个codes带有相应助记符的数字列表,names我想为它们创建一个 Django 模型,因此它们names是主键,但还有一个约束,即code列中的值是唯一的。
我尝试的是以下内容:
class Constant(models.Model):
name = models.CharField(max_length=70)
name.primary_key = True
code = models.IntegerField()
description = models.CharField(max_length=100)
unique_together = (("code",),)
Run Code Online (Sandbox Code Playgroud)
我意识到这unique_together是为了在一组列中强制执行值的唯一性,但我想我会尝试只使用一个并且它似乎有效,即执行时没有错误python manage.py syncdb,但它并没有真正强制执行我想要的约束:
mysql> describe constant;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| name | varchar(70) | NO | PRI | | |
| code | int(11) | NO | | | |
| description | varchar(100) | …Run Code Online (Sandbox Code Playgroud) 我有一个可选的电子邮件字段。正则表达式可以很好地接受空字符串 (^$),但现在的问题是空字符串被视为唯一条目。它只允许一个用户在不输入电子邮件地址的情况下进行注册。我知道我必须将其设置为 null,但不确定如何设置。
像这样的东西:
我想在 plpgsql 函数中捕获一个异常,如果它违反特定的命名唯一约束,并且对于所有其他情况向客户端抛出原始错误,包括其他唯一约束(匹配不同的名称)。
我可以在手册中看到如何使用 对所有独特的约束违规执行此操作EXCEPTION WHEN unique_violation THEN,但是我如何仅针对特定的约束执行此操作?
关于这个主题已经有很多问题,但不是我正在寻找的问题。
我有这个Model:
class Options(TimeStampedModel)
option_1 = models.CharField(max_length=64)
option_2 = models.CharField(max_length=64)
class Meta:
unique_together = ('option_1', 'option_2')
Run Code Online (Sandbox Code Playgroud)
现在我对字段有一个独特的约束。有没有一种办法也该定义的其他方式,使其不管什么是option_1,什么是option_2
例如:
Options.create('spam', 'eggs') # Allowed
Options.create('spam', 'eggs') # Not allowed
Options.create('eggs', 'spam') # Is allowed but should not be
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我有一个注册表单,我想在其中使电子邮件和手机号码字段的数据唯一....
class SignUpForm(UserCreationForm):
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.', unique=True)
mobile_no = forms.CharField(validators=[max_length=17, initial='+91', unique=True)
Run Code Online (Sandbox Code Playgroud)
我目前正在使用,unique=True但它引发错误...
TypeError: __init__() got an unexpected keyword argument 'unique'
Run Code Online (Sandbox Code Playgroud) django ×3
postgresql ×3
sql ×3
hibernate ×2
plpgsql ×2
python ×2
sql-server ×2
unique-key ×2
constraints ×1
django-forms ×1
java ×1
oracle ×1
primary-key ×1
python-3.x ×1
triggers ×1