Benutzer mit den meisten Antworten
Check Constraint zwischen tabellen

Frage
-
hi, ich hab ein verständnisproblem bei der syntax in der dialog box ...
In TSQL würe die bedingung (tblA.fkID & tblB.pkID) > 0 lauten - wie müsste das in der box dann stehen?
weder die hilfe noch bing werfen was brauchbares oder ein beispiel aus.
danke, christian
Antworten
-
Bei einfachen Constraints wiederrum wüsste ich gerade nicht, wie man auf andere Tabellen referenziert (wobei ich nicht alles weiß ;-) ).
So zum Beispiel:
CREATE TABLE dbo.t ( c int ); GO CREATE FUNCTION dbo.u() RETURNS int AS BEGIN RETURN (SELECT MAX(c) FROM dbo.t) END GO CREATE TABLE dbo.t1 ( c1 int CONSTRAINT C_t1_c1 CHECK(c1 > dbo.u()) ); INSERT INTO dbo.t SELECT 10; INSERT INTO dbo.t1 SELECT 11 --succeeds INSERT INTO dbo.t1 SELECT 9 --fails
Ob das allerdings Sinn macht, liegt im Auge des Betrachters.
-- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org- Als Antwort vorgeschlagen Robert BreitenhoferModerator Sonntag, 6. September 2009 09:38
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 9. September 2009 15:04
Alle Antworten
-
Hallo cm_vsl,
diese "Dialog Box" finde ich nur, wenn man ein einfaches Constraint anlegen will, nicht bei Foreign Key Constrains.
Bei einfachen Constraints wiederrum wüsste ich gerade nicht, wie man auf andere Tabellen referenziert (wobei ich nicht alles weiß ;-) ).
Wie sieht es bei Dir konkret in T-SQL aus?
Was & wie (wo) genau machst Du, damit ich es nachvollziehen kann.
Bis dann,
Olaf Helper
Olaf Helper [COLOR="Silver"][SIZE="1"][/SIZE] [SIZE="1"][/SIZE][/COLOR] * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich -
Bei einfachen Constraints wiederrum wüsste ich gerade nicht, wie man auf andere Tabellen referenziert (wobei ich nicht alles weiß ;-) ).
So zum Beispiel:
CREATE TABLE dbo.t ( c int ); GO CREATE FUNCTION dbo.u() RETURNS int AS BEGIN RETURN (SELECT MAX(c) FROM dbo.t) END GO CREATE TABLE dbo.t1 ( c1 int CONSTRAINT C_t1_c1 CHECK(c1 > dbo.u()) ); INSERT INTO dbo.t SELECT 10; INSERT INTO dbo.t1 SELECT 11 --succeeds INSERT INTO dbo.t1 SELECT 9 --fails
Ob das allerdings Sinn macht, liegt im Auge des Betrachters.
-- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org- Als Antwort vorgeschlagen Robert BreitenhoferModerator Sonntag, 6. September 2009 09:38
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 9. September 2009 15:04
-
Hallo Frank,
ok, mit einem kleinen Umweg über eine UDF; das kenne ich auch.
Und die Constraint-Bedingung "c1 > dbo.u()" kann man dann auch so in die Dialog Box vom SSMS eingeben.
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich