如何在visual studio中的varchar(max)字段上创建唯一约束.
问题是我试试的时候:
管理索引和键>添加>列
我只能选择bigint列,但不能选择任何varchar(max)列.
我是否可能必须使用检查约束?
如果是的话,在表达中放什么?
Thnx的信息
我有一张正在制作的桌子.我意识到一些列应该是唯一的.进入phpMyAdmin并更改这些列以使其独一无二是否安全?
ALTER TABLE `foo` ADD UNIQUE ( `bar` )
Run Code Online (Sandbox Code Playgroud) 我们有一个遗留数据库模式,有一些有趣的设计决策.直到最近,我们才支持Oracle和SQL Server,但我们正在尝试添加对PostgreSQL的支持,这引发了一个有趣的问题.我搜索了Stack Overflow和其他互联网,我不相信这种特殊情况是重复的.
对于唯一约束中的可空列,Oracle和SQL Server的行为都相同,这实际上是在执行唯一检查时忽略NULL列.
假设我有以下表格和约束:
CREATE TABLE EXAMPLE
(
ID TEXT NOT NULL PRIMARY KEY,
FIELD1 TEXT NULL,
FIELD2 TEXT NULL,
FIELD3 TEXT NULL,
FIELD4 TEXT NULL,
FIELD5 TEXT NULL,
...
);
CREATE UNIQUE INDEX EXAMPLE_INDEX ON EXAMPLE
(
FIELD1 ASC,
FIELD2 ASC,
FIELD3 ASC,
FIELD4 ASC,
FIELD5 ASC
);
Run Code Online (Sandbox Code Playgroud)
在Oracle和SQL Server上,保留任何可为空的列NULL将导致仅对非空列执行唯一性检查.所以以下插入只能执行一次:
INSERT INTO EXAMPLE VALUES ('1','FIELD1_DATA', NULL, NULL, NULL, NULL );
INSERT INTO EXAMPLE VALUES ('2','FIELD1_DATA','FIELD2_DATA', NULL, NULL,'FIELD5_DATA');
-- These will succeed when they should violate …Run Code Online (Sandbox Code Playgroud) 我正在尝试在表格中创建一个新行.表上有两个约束 - 一个在关键字段(DB_ID)上,另一个约束一个值为字段ENV中的几个之一.当我执行插入操作时,我不会将键字段包含为我要插入的字段之一,但是我收到此错误:
unique constraint (N390.PK_DB_ID) violated
Run Code Online (Sandbox Code Playgroud)
这是导致错误的SQL:
insert into cmdb_db
(narrative_name, db_name, db_type, schema, node, env, server_id, state, path)
values
('Test Database', 'DB', 'TYPE', 'SCH', '', 'SB01', 381, 'TEST', '')
Run Code Online (Sandbox Code Playgroud)
我唯一能够看到的是,如果手动插入行,Oracle可能会尝试分配已经在使用的DB_ID.此数据库中的数据以某种方式从生产数据库中恢复/移动,但我没有详细说明如何完成.
有什么想法吗?
我想用ManyToMany关系来保持我的实体.但是在持久化过程中我遇到了一些问题.
我的实体:
@Entity
@Table(name = "USER")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long userId;
@Column(name = "NAME", unique = true, nullable = false)
String userName;
@Column(name = "FORNAME")
String userForname;
@Column(name = "EMAIL")
String userEmail;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "USER_USER_ROLES", joinColumns = @JoinColumn(name = "ID_USER"), inverseJoinColumns = @JoinColumn(name = "ID_ROLE"))
List<UserRoles> userRoles = new ArrayList<UserRoles>();
// getter et setter
}
Run Code Online (Sandbox Code Playgroud)
和
@Entity …Run Code Online (Sandbox Code Playgroud) 我在使用neo4j唯一约束方面遇到了一些麻烦,其中CREATE cypher语句由于节点已经存在而无法执行.问题是,它不存在(存在).此外,这个确切的过程与昨天的确切数据有关.
我的neo4j版本是ubuntu 12.04.3上的社区2.0.0(发布).这是我目前的情况:
我的约束:
tas@vtas:~$ neo4j-shell
neo4j-sh (?)$ schema
Indexes
ON :ConsumerUser(tokens) ONLINE
ON :Id(uuid) ONLINE (for uniqueness constraint) #relevant
ON :User(email) ONLINE (for uniqueness constraint)
ON :User(username) ONLINE (for uniqueness constraint)
Constraints
ON (user:User) ASSERT user.email IS UNIQUE
ON (user:User) ASSERT user.username IS UNIQUE
ON (id:Id) ASSERT id.uuid IS UNIQUE #relevant
Run Code Online (Sandbox Code Playgroud)
:Id.uuid应该是唯一的.
我没有任何数据:
neo4j-sh (?)$ dump
begin
create index on :`ConsumerUser`(`tokens`);
create index on :`Id`(`uuid`);
create index on :`User`(`email`);
create index on :`User`(`username`);
;
Run Code Online (Sandbox Code Playgroud)
(也用cypher验证MATCH (n) return …
我有一列一个简单的MySQL表:name.
我想在此列上定义一个唯一约束.
我可以:
class MyModel < ActiveRecord::Base
validates_uniqueness_of :my_column_name
end
Run Code Online (Sandbox Code Playgroud)
但它只能在应用程序级别工作,而不能在数据库级别工作.
你会建议什么?
mysql ruby-on-rails unique unique-constraint ruby-on-rails-3
我正在尝试为两列创建一个UNIQUE INDEX约束,但仅当另一列包含值1.例如,column_1并且column_2只有当时才应该是UNIQUE active = 1.包含任何行active = 0可以共享价值观column_1和column_2与另一行,不管其它行的价值是什么active是.但行active = 1不能共享column_1或column_2具有的另一行的值active = 1.
我所说的"共享"是两行在同一列中具有相同的值.示例:row1.a = row2.a AND row1.b = row2.b. 仅当row1中的两列与row2中的其他两列匹配时,才会共享值.
我希望我清楚自己.:\
如何创建对数组中所有值的唯一性的约束,如:
CREATE TABLE mytable
(
interface integer[2],
CONSTRAINT link_check UNIQUE (sort(interface))
)
Run Code Online (Sandbox Code Playgroud)
我的排序功能
create or replace function sort(anyarray)
returns anyarray as $$
select array(select $1[i] from generate_series(array_lower($1,1),
array_upper($1,1)) g(i) order by 1)
$$ language sql strict immutable;
Run Code Online (Sandbox Code Playgroud)
我需要的是值{10,22}和{22,10}被认为是相同的并且在UNIQUE CONSTRAINT下检查
我有一些非独特的约束,我想改变成唯一约束(业务规则自数据模型制定以来已经改变).有没有办法在删除和重新创建作为唯一约束的情况下执行此操作?我在想这个alter constraint命令会有一个选项,但我没找到任何东西.
谢谢!!
mysql ×3
constraints ×2
oracle ×2
postgresql ×2
sql ×2
arrays ×1
cypher ×1
duplicates ×1
java ×1
jpa ×1
many-to-many ×1
neo4j ×1
null ×1
oracle10g ×1
phpmyadmin ×1
sql-server ×1
unique ×1