如何将逻辑运算符插入SQL约束?

时间:2016-04-17 06:05:49

标签: sql sql-server database database-design

使用SQL Server我尝试做一些非常简单的事情,但解决方案正在逃避我。

我的数据库在创建时抛出错误。我真的只想检查<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/> <uses-permission android:name="android.permission.GET_TASKS"/> customer.type是否'Student'对应'@'列。

反之亦然,如果customer.emailcustomer.type,则其'Faculty'列以customer.email结尾。

我花了大约半个小时的时间研究这个问题,而且我无法让它发挥作用。

'@d.umn.edu'

注意:它不需要在一个约束中。提前谢谢。

2 个答案:

答案 0 :(得分:2)

  1. 正如之前在评论中所指出的那样,以及用户id212514,你错过了关闭的义务。

  2. 其次,在您的插入中,电子邮件ID是最后一个。根据您的值,电子邮件ID将输入到密码字段中,密码将输入到电子邮件ID字段中。

  3. 您的陈述应该是:

    INSERT INTO Customer (F_name, M_name, L_name, type, street, city, state, zip, email, password)
        VALUES
        ('Jarvis', 'Marvin', 'Vinton', 'Student', '3525 Metz Lane', 'Runnemede St.', 'NJ', 08078, 'vint0934@d.umn.edu', 'Kohque4Oo')   --interchanged email and password.
    
    INSERT INTO Customer (F_name, M_name, L_name, type, street, city, state, zip, email, password)
    values
       ('Olivia', 'Audrey', 'Keele', 'Faculty', '2850 Snowbird Ln.', 'Waco', 'NE', 68460, 'keel@d.umn.edu', 'Blackdiamond26')
    

    了解更多详情: http://www.w3schools.com/sql/sql_insert.asp

答案 1 :(得分:1)

你错过了一个右括号。

Create table Customer(
        CID int identity(1,1) primary key,
        F_name char(25),
        M_name char(25),
        L_name char(25),
        type char(7),
        street varchar(50),
        city varchar(25),
        state char(2),
        zip numeric(5),
        password varchar(25) not null,
        email varchar(25) UNIQUE Not null,
    Constraint CK_Customer_type check (type in ('Student','Faculty')),
    Constraint CK_Customer_email check((type='Student' AND email like '%@%') OR (type='Faculty' AND email like'%@d.umn.edu'))-- this is throwing an error
) -- <<-- you are missing the closing parenthesis from create table Customer (

在您的插入声明中,您可以反转密码和电子邮件地址。我在列表中交换了它们,它的工作原理如下:

INSERT INTO Customer (F_name, M_name, L_name, type, street, city, state, zip, email, password)
VALUES
('Jarvis', 'Marvin', 'Vinton', 'Student', '3525 Metz Lane', 'Runnemede St.', 'NJ', 08078, 'vint0934@d.umn.edu', 'Kohque4Oo'),
('Olivia', 'Audrey', 'Keele', 'Faculty', '2850 Snowbird Ln.', 'Waco', 'NE', 68460, 'keel@d.umn.edu', 'Blackdiamond26')

(考虑避免以明文形式存储密码)