Verwenden von SQL Server Ich versuche, etwas wirklich einfaches zu tun, aber die Lösung entgeht mir.Wie füge ich logische Operatoren in SQL-Einschränkungen ein?
Meine Datenbank wirft einen Fehler bei der Erstellung. Ich wollte wirklich nur überprüfen, ob die customer.type
'Student'
ist, dass es dort eine '@'
entsprechende customer.email
Spalte gibt.
Umgekehrt, wenn die customer.type
'Faculty'
ist, dass ihre customer.email
Spalte endet mit einem '@d.umn.edu'
.
Ich habe etwa eine halbe Stunde damit zu tun, und ich kann es dumm nicht funktionieren.
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
)
INSERT INTO Customer (F_name, M_name, L_name, type, street, city, state, zip, password, email)
VALUES
('Jarvis', 'Marvin', 'Vinton', 'Student', '3525 Metz Lane', 'Runnemede St.', 'NJ', 08078, '[email protected]', 'Kohque4Oo'),
('Olivia', 'Audrey', 'Keele', 'Faculty', '2850 Snowbird Ln.', 'Waco', 'NE', 68460, '[email protected]', 'Blackdiamond26')
Hinweis: Es muss nicht in einer Einschränkung sein. Danke im Voraus.
Was ist der Fehler? Dies funktionierte in Orakel, nach dem Schließen der Paranthesis am Ende der Aussage. Geschlossen für den Kunden ( –
Arbeitete auch in sqlserver. Versucht in sqlfiddle. Schließen Sie die paranthesis.OR (type = 'Faculty' AND email wie '% @ d.umn.edu'))) –
wenn ich versuche, Daten einzufügen, bekomme ich Folgendes error: Die INSERT-Anweisung steht im Konflikt mit der CHECK-Einschränkung "CK_Customer_email". Der Konflikt ist in der Datenbank "ZZ16AndrewW", Tabelle "dbo.Customer" aufgetreten. Die Anweisung wurde beendet. –