我可以在SQL中创建表创建一个唯一键吗?

时间:2015-11-19 00:13:52

标签: mysql sql-server

我正在尝试将MySQL函数的集合转换为SQL,并且我遇到了UNIQUE KEY问题的问题:

-- -----------------------------------------------------
-- Table testform
-- -----------------------------------------------------
CREATE TABLE `testform` (
    `FormId` INT(11) NOT NULL AUTO_INCREMENT,
    `TTId` INT(11) NULL DEFAULT NULL,
    `TestName` VARCHAR(100) NULL,
    PRIMARY KEY (`FormId`),
    UNIQUE KEY `TF_Composite` (`TTId`, `TestName`));

当我尝试在SQLFiddle中测试它时,它给了我错误

  

关键字' KEY'附近的语法不正确。

我已经尝试过搜索这个,但到目前为止,我所提出的是"唯一约束"。 " Key"之间是否存在差异?和#34;约束"在SQL?如果是这样,我如何在表创建语句中添加它?

3 个答案:

答案 0 :(得分:1)

你的语法都搞砸了。请在线查看书籍(MSDN)。

https://msdn.microsoft.com/en-us/library/ms174979.aspx

下面的示例代码在tempdb中创建一个表。重新启动服务时,此表会自动销毁。

-- Just a example, throw away after reboot
USE [tempdb]
GO

-- Create the table
CREATE TABLE DBO.TESTFORM 
(
    FORM_ID INT IDENTITY(1, 1) NOT NULL ,
    TT_ID INT NULL,
    TEST_NAME VARCHAR(100) NULL,
    CONSTRAINT PK_FORM_ID PRIMARY KEY (FORM_ID),
    CONSTRAINT UN_COMPOSIT UNIQUE (TT_ID, TEST_NAME)
);

-- Seventies Band
INSERT INTO TEMPDB.DBO.TESTFORM VALUES (1, 'John');
INSERT INTO TEMPDB.DBO.TESTFORM VALUES (2, 'Paul');
INSERT INTO TEMPDB.DBO.TESTFORM VALUES (3, 'Mary');
GO

-- Show data
SELECT * FROM  TEMPDB.DBO.TESTFORM 
GO

下图显示了此表中的数据。

enter image description here

答案 1 :(得分:0)

为了更好地了解主要和唯一,您可以参考下面的页面 Primary and Unique Key Creation

答案 2 :(得分:0)

试试这个。

CREATE TABLE testform (
    FormId INT(11) NOT NULL AUTO_INCREMENT,
    TTId INT(11) NULL DEFAULT NULL,
    TestName VARCHAR(100) NULL,
    PRIMARY KEY (FormId),
    CONSTRAINT TF_Composite UNIQUE (TTId,TestName));

More Details..