相关疑难解决方法(0)

如何在SSMS 2012中创建UNIQUE约束

我是SQL Server的新手,我使用的是2012版.

我有一个具有以下结构的表:

Attendance
--------------
TagID     (FK)
SessionID (FK)       
ScanningTime
Run Code Online (Sandbox Code Playgroud)

我需要基于两列(TagIDSessionID)创建一个唯一约束

我不知道该怎么做.我创建了一个查询并尝试了这段代码:

ALTER TABLE Attendance ADD CONSTRAINT UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行它时,我收到此错误:

消息156,级别15,状态1,行2
关键字"UNIQUE"附近的语法不正确.

使用SSMS更改表格的正确方法是什么?我应该每次创建一个查询吗?

sql database sql-server ssms sql-server-2012

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

字段值必须是唯一的,除非它为NULL

我正在使用SQL Server 2005.

我有一个必须包含唯一值或NULL值的字段.我想我应该用a CHECK CONSTRAINT或a 强制执行TRIGGER for INSERT, UPDATE.

在触发器上使用约束是否有优势(反之亦然)?这样的约束/触发器可能是什么样的?

或者是否有其他更合适的选择我没有考虑过?

sql sql-server null sql-server-2005

10
推荐指数
2
解决办法
4719
查看次数

在Microsoft SQL Server中使用复合键

我有一个具有以下结构的SQL表:

在此输入图像描述

我希望此表的工作方式是,如果表中输入的项具有相同的名称和类型,则它只是重复项,以便下面的示例在将这两个项添加到数据库时有效.

Item 1:
Name: MILE50
Acronym: MS50
Type: PRE
Color: white
Run Code Online (Sandbox Code Playgroud)
Item 2:
Name: MILE50
Acronym: MS50
Type: SYS
Color: white
Run Code Online (Sandbox Code Playgroud)

目前,如果我输入数据如图所示,则会导致错误,指出存在违反主键约束的错误.我是否误解了复合键在SQL中的工作原理?如果是这样,我怎么能实现我正在寻找的东西?

非常感谢.

编辑:更新的SQL脚本

    USE [ProjectPlannerDatabase]
GO

/****** Object:  Table [dbo].[MilestoneCategory]    Script Date: 14/12/2015 14:55:04 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[MilestoneCategory](
    [Name] [varchar](200) NOT NULL,
    [Acronym] [varchar](200) NOT NULL,
    [Type] [varchar](20) NOT NULL,
    [Color] [varchar](200) NOT NULL,
 CONSTRAINT [PK_MilestoneCategory] UNIQUE NONCLUSTERED 
(
    [Name] ASC,
    [Type] ASC
)WITH (PAD_INDEX = …
Run Code Online (Sandbox Code Playgroud)

sql-server unique-constraint

5
推荐指数
1
解决办法
122
查看次数

Sql Server每个用户只允许一个活动图像

我正在尝试添加到我们有tblUsers表的现有数据库.到目前为止,我们将用户图像存储在文件系统中,现在我们正在通过将用户图像存储在新的tblUserImages表中的数据库中而远离它.

这是两个表的样子.

表结构

我想添加一个约束,每个用户只允许一个活动图片,但我不知道如何做到这一点.我试过看起来无济于事.任何帮助是极大的赞赏!我还有很多东西要学习SQL Server.

sql sql-server

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

彻底检查电子邮件是否存在,NHibernate,LINQ

对于我的身份验证模型,我想确保同一封电子邮件不可能多次注册.我是nHibernate和部分LINQ的新手,所以我问这是否足够"检查"以确保发生这种情况.

  public MembershipCreateStatus CreateUser(string email, string password)
  {
   if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "userName");
   if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");


   using (var session = sessionFactory.OpenSession())
   {
    using (var transaction = session.BeginTransaction())
    {
     var members = session.CreateCriteria<Member>().List<Member>();

     // determine is the email address already exists in the database
     if (members.Any(i => i.Email == email))
      return MembershipCreateStatus.DuplicateEmail;

     // create the new member, if they are valid
     var member = new Member { …
Run Code Online (Sandbox Code Playgroud)

c# linq nhibernate

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