我有以下内容:
class AccountAdmin(models.Model):
account = models.ForeignKey(Account)
is_master = models.BooleanField()
name = models.CharField(max_length=255)
email = models.EmailField()
class Meta:
unique_together = (('Account', 'is_master'), ('Account', 'username'),)
Run Code Online (Sandbox Code Playgroud)
如果我然后在同一个帐户上创建一个与另一个用户名相同的新AccountAdmin,而不是让我在模板中显示错误,则会出现IntegrityError,页面就会中断.我希望在我看来,我可以去:
if new_accountadmin_form.is_valid():
new_accountadmin_form.save()
Run Code Online (Sandbox Code Playgroud)
我该如何克服这个问题.是否有第二种is_valid()类型的方法检查数据库是否违反了该unique_together = (('Account', 'is_master'), ('Account', 'username'),)部分?
我不想在我的视图中捕获IntegrityError.那个域逻辑与表示逻辑混合在一起.它违反DRY,因为如果我在2页上显示相同的表格,我将不得不重复相同的块.它也违反了DRY,因为如果我有两种形式用于同一件事,我必须写相同的,除了:再次.
我想验证用户实体的唯一性。我这样做:
$builder->add('email', 'email', array(
'required' => true,
'constraints' => array(
new NotBlank(), new Email(), new UniqueEntity(array('fields' => array('email')))
)
)
)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
警告:get_class() 期望参数 1 是对象,在 vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php 第 66 行中给出的字符串
我究竟做错了什么?
我在表中有一个具有唯一约束的列。
现在一般来说,如果该列的值是否重复,最好检查数据库,或者最好处理它在 try catch 中产生的异常?
答案是通用的,还是会出现这样的情况,例如它只是一个简单的表,例如用户名列,或者表有许多列和外键。
编辑:
在阅读了两个答案后,我认为这件事是有争议的,因为它可能会导致数据库在预检查或捕获异常时出现代码问题的性能问题,但我认为我更喜欢捕获异常,尤其是在唯一值需要更新的情况下。
我有一个表,我想确保五列的组合在该表中保持唯一。例如:
ALTER TABLE [dbo].[MyTable]
ADD CONSTRAINT [UQ__MyTable.MFG.Model.Class.Depiction.Iteration]
UNIQUE NONCLUSTERED
(
[ManufacturerID] ASC,
[Model] ASC,
[BlockClassID] ASC,
[BlockDepictionID] ASC,
[BlockIterationID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
我想排除第六个单独列具有特定值的组合。例如,我只想在列 [Flag] = 0 时强制执行上述约束,并在列 [Flag] = 1 时排除强制执行。
sql sql-server conditional unique-constraint sql-server-2008-r2
我有一个有3列的表.列是
BaseColumns._ID | NATIVE_CONTACT_ID | HIDDEN_TYPE
Run Code Online (Sandbox Code Playgroud)
在这些,BaseColumns._ID是一个主要的关键.我想要的是,我不想让开发人员插入重复值NATIVE_CONTACT_ID,如果他试图插入,那么HIDDEN_TYPE对应的列值的旧值NATIVE_CONTACT_ID应该用新值覆盖.
让我更多地澄清你.例如,我的表在几次插入后看起来像这样.
_ID | NATIVE_CONTACT_ID | HIDDEN_TYPE
---------------------------------------
1 23 1
2 24 0
3 25 1
4 26 0
Run Code Online (Sandbox Code Playgroud)
现在,当开发人员想要插入NATIVE_CONTACT_ID值为25且具有HIDDEN_TYPE值的新行时0,旧值HIDDEN_TYPE应更改为此新值.这里它应该改为0from 1,我不想允许重复插入NATIVE_CONTACT_ID.
我希望我能清楚地解释我的问题.
现在我的问题是,我需要使用什么关键字和SQL语句来创建这样的表?
这是我试过的......
public static final String TABLE_NAME = "hidden_info";
public static final String HIDDEN_TYPE = "hidden_type";
public static final String NATIVE_CONTACT_ID = "native_contact_id";
public static final String _ID = BaseColumns._ID; …Run Code Online (Sandbox Code Playgroud) 对于像这样的表:
CREATE TABLE example (
totally_unique JSONB
);
Run Code Online (Sandbox Code Playgroud)
如何限制所有键的值totally_unique必须不同?键和值可以是任何字符串,所以我不能只为每个可能的键编写单独的约束。
换句话说,如果{"a": "one", "b": "two"}在表中,我想阻止插入,{"a": "one", "b": "three"}因为该值totally_unique->>'a' = 'one'已经存在。
一个UNIQUE约束是不够的,但我看不出有什么样的约束或指数会工作。
我对节点的属性有唯一性约束.当我这样做时,如果值已经存在,CREATE我会收到ConstraintValidationFailed错误.在这种情况下,如何从Cypher查询中返回特定值,而不是依赖于约束验证错误?
例如,我希望exists在发生冲突时返回字符串.
伙计们,我在数据库中有那个表
-------------------------------------------------------------
ID | COMPANY_ID | NAME | DESCRIPTION | BARCODE
-------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想限制唯一的条形码应该使用相同的 companyID .... 那么如何在 mysql 中做到这一点?
注意:我可以在表中输入多个 company_id
我有一个包含 3 列的表格:A(数字)、B(数字)和 C(布尔值)。
我需要创建一个规则,以防止使用列 A 和 B 以及 C 等于 true 创建记录。例如。
这将被允许:
A B C
1 2 true
1 2 false
1 2 false
Run Code Online (Sandbox Code Playgroud)
但是这个,不:
A B C
1 2 true
1 2 true
1 2 false
Run Code Online (Sandbox Code Playgroud) 如何在 Postgres 的文本列上添加唯一约束(忽略特殊字符)?
CREATE TABLE my_table(
SomeTextColumn citext
CONSTRAINT person_u_1 UNIQUE (SomeTextColumn)
);
Run Code Online (Sandbox Code Playgroud)
在上表中,我尝试添加一个唯一约束,该约束将通过忽略传入数据中的特殊字符来寻找唯一性
For example:
1. HelloWorld --> Gets inserted successfully
2. Hello World --> Should fail with duplicate constraint
2. Hello%$^&*W^%orld --> Should fail with duplicate constraint
Run Code Online (Sandbox Code Playgroud) sql ×5
postgresql ×2
c# ×1
conditional ×1
constraints ×1
cypher ×1
django ×1
django-views ×1
exception ×1
java ×1
json ×1
mysql ×1
neo4j ×1
oracle ×1
python ×1
regex ×1
sql-server ×1
sqlite ×1
symfony ×1
symfony-2.3 ×1
try-catch ×1