Validation to replace (unique/check) constraint
Hi,
I have a unique constraint on a table. When this constaint is violated (someone tries to insert a value that's already present) the standard APEX error is shown. However, I want to replace this with a regular error message, produced by the validation rules. Is there an easy way to do this?
Thanks
I am having the same issue and have done as Tyler has suggested. My issue is with users being able to upload documents with the same filename.
My EXISTS validation code is as follows:
select 1
from doc_detail
where filename = :P4_FILENAMEHowever whenever a file with the same or even different (new file) the error message appears.
I've ran the query in Toad to verify with existing filenames and filenames not in the table and I get the correct answer set.
Any ideas?
Similar Messages
-
Tabular Form Validation: Comparing Two Columns vs Check Constraint
What is the best approach for validating that one column needs to be greater than another column in a tabular form when attempting to save. (E.g. An effective date and expirey date column. The expirey date column >= effective date column)
At the moment I have a check constraint on the two columns at the database level which is fine but it returns and passes up a pretty cryptic (from a business user perspective) unfriendly message to the user as follows:
Error in mru internal routine: ORA-20001: Error in MRU: row= 1, ORA-02290: check constraint (IDMTC.ADDRESS_TYPE_CON) violated, update "IDMTC"."ADDRESS_TYPE" set "ID" = :b1, "CODE" = :b2, "NAME" = :b3, "LOV_SORT_ORDER" = :b4, "DESCRIPTION" = :b5, "EFFECTIVE_DATE" = :b6, "EXPIRY_DATE" = :b7 where "ID" = :p_pk_col
Unable to process update.
Is there a way to inject, detect and/or replace this with a friendlier business user message? I have confirmed that the "Unable to process update." text at the bottom below the MRU Internal routine error raised from my check constraint is the process error message for my Apply MRU process.
I was hesitating going down a larger page level validation where I loop through the tabular form array and/or inject some client side Javascript.
Any advice? Have I simply overlooked some tabular form options for validating using cross column values?
Thanks,
JeffJeff..Thanks for the response.
However because I am working in a tabular form at design time I don't know which controls I can reference in a dynamic action, or custom Javascript routine other than selecting all elements in a column using JQuery, etc.
I have decided to go with for the time being an approach I found here: doing validation on tabular form
My code ended up looking something like and was entered into a page level validation as a PL/SQL function body returning error text.:
DECLARE
l_error VARCHAR2 (4000);
BEGIN
FOR i IN 1 .. apex_application.g_f02.COUNT
LOOP
--If Expiry date is older then effective date
IF nvl(apex_application.g_f08 (i), to_date('31-DEC-9999', 'dd-mon-yyyy')) < apex_application.g_f07 (i) THEN
l_error :=
l_error
|| '</br>'
|| 'Row '
|| i
|| ': Expiry date must be greater than effective date '
|| ' for maintenance item name: '
|| apex_application.g_f03 (i);
END IF;
END LOOP;
RETURN LTRIM (l_error, '</br>');
END;
I had been hoping with Apex 4+ that there was additional native functionality to do this type of validation or somehow be able to reference a column or control name instead of a generic array column so that my code was better self documenting.
It works for now...but would love to revisit with maybe a cleaner client side solution that does the validation and highlights the invalid element since I still maintain data integrity at the db with the check constraint.
Thanks,
Jeff -
Dear community,
I have a flat data set which I run through a lookup and return. I want to check if at least one of the records matching a unique key constraint had a successful return without merging all the records. Can some one point me in the right direction?
Thanks!
MarcHi,
Sounds like a job for the Lookup Check processor!
As with all check processors, it adds a flag attribute (with a Y/N value) that denotes if the lookup was successful or not, as well as filtering records based on this at output.
Lookup Check does the same as Lookup and Return but does not return the record(s) looked up.
Also note that Lookup and Return does not actually merge records, but it does pull back the return data (which you can then split if you want a record for each).
Regards,
Mike -
Primary key and relevant not null check constraints....
Hi ,
There are some constraints of primary key type and not null check constraints on columns which constitute each primary key....
Should I/Do I have to drop them....????
Do they burden the db at the time of data validation....????
Thanks...
SimHi,
>>There are some constraints of primary key type and not null check constraints on columns which constitute each primary key..
In fact, a column that constitutes a primary key, by default cannot accept NULL values. In this case, defines a PK column as NOT NULL would not be necessary.
LEGATTI@ORACLE10> create table x (id number constraint pk_x primary key);
Table created.
LEGATTI@ORACLE10> desc x
Name Null? Type
ID NOT NULL NUMBER
LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='X';
CONSTRAINT_NAME C TABLE_NAME SEARCH_CONDITION
PK_X P X
LEGATTI@ORACLE10> create table y (id number not null constraint pk_y primary key);
Table created.
LEGATTI@ORACLE10> desc y
Name Null? Type
ID NOT NULL NUMBER
LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='Y';
CONSTRAINT_NAME C TABLE_NAME SEARCH_CONDITION
SYS_C006327381 C Y "ID" IS NOT NULL
PK_Y P Y
LEGATTI@ORACLE10> alter table y drop constraint SYS_C006327381;
Table altered.
LEGATTI@ORACLE10> desc y
Name Null? Type
ID NOT NULL NUMBER
LEGATTI@ORACLE10> insert into y values (NULL);
insert into y values (NULL)
ERROR at line 1:
ORA-01400: cannot insert NULL into ("LEGATTI"."Y"."ID")
LEGATTI@ORACLE10> insert into y values (1);
1 row created.
LEGATTI@ORACLE10> insert into y values (1);
insert into y values (1)
ERROR at line 1:
ORA-00001: unique constraint (LEGATTI.PK_Y) violated
>>Should I/Do I have to drop them....????
I don't see any problem, otherwise, drop the NOT NULL constraint is the same with alter the column table like below:
LEGATTI@ORACLE10> create table z (id number not null constraint pk_z primary key);
Table created.
LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='Z';
CONSTRAINT_NAME C TABLE_NAME SEARCH_CONDITION
SYS_C006328420 C Z "ID" IS NOT NULL
PK_Z P Z
LEGATTI@ORACLE10> desc z
Name Null? Type
ID NOT NULL NUMBER
LEGATTI@ORACLE10> alter table z modify id NULL;
Table altered.
LEGATTI@ORACLE10> select constraint_name,constraint_type,table_name,search_condition from user_constraints where table_name='Z';
CONSTRAINT_NAME C TABLE_NAME SEARCH_CONDITION
PK_Z P Z
LEGATTI@ORACLE10> desc z
Name Null? Type
ID NOT NULL NUMBERCheers
Legatti -
Using a function in a check constraint
Hi,
I created a domain table(id, code, domain_code, description) and foreign keys to this table. To ensure that a valid domain is put in the column I created a function that returns a boolean and has two parameters (id and domain_code). It returns true if the id and domain belong together.
I want to know if it is possible to create a check constraint which validates the data in the refering table with the data in the domain table.
Does anyone know if this is possible? Or do I have to use a db-trigger?
Regards,
RomanoIt still sounds like all you need is a foreign key constraint. Please see the example below, based on your revised criteria.
scott@ORA92> create table domain
2 (id number,
3 code number,
4 domain_code number,
5 constraint domain_pk primary key (id),
6 constraint domain_uk unique (code, domain_code))
7 /
Table created.
scott@ORA92> insert into domain values (1, 10, 2)
2 /
1 row created.
scott@ORA92> create table domain_values_table
2 (id number,
3 domain_code number,
4 constraint domain_values_table_uk unique (id, domain_code))
5 /
Table created.
scott@ORA92> insert into domain_values_table values (1, 2)
2 /
1 row created.
scott@ORA92> commit
2 /
Commit complete.
scott@ORA92> create table referring
2 (id number,
3 domain_code number,
4 status number,
5 constraint referring_fk foreign key (status)
6 references domain (id),
7 constraint referring_fk2 foreign key (id, domain_code)
8 references domain_values_table (id, domain_code))
9 /
Table created.
scott@ORA92> insert into referring values (1, 2, null)
2 /
1 row created.
scott@ORA92> insert into referring values (3, 4, null)
2 /
insert into referring values (3, 4, null)
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.REFERRING_FK2) violated - parent key not found -
Difference between a check constraint and a trigger
Hi, I wanted to know the exact usage of a trigger within a database.
Suppose I want to have a restriction on an insert into a Employees table that provides a check on the time that a particular employee signs in,
I could do that with the help of a before insert trigger that prevents certain values fgrom being inserted.
But cant I do the same thing with the help of a simple check constraint?
Where exactly does the distincton lie between a constraint and a trigger?
Edited by: user8680847 on Sep 24, 2009 11:55 PMA trigger is fired due to DML operations(Insert,Update,Delete) ot on Database events like startup, shutdown etc. You can write your piece of logic into the trigger to do the necessary operations when the event occurs.
For example, if you want you track the changes made to +(emp)+ table data you can place a before update trigger on the table and place your code inside the triiger to insert the old values into an audit table +(emp_audit)+. Everytime an update is made on the table data the trigger will get fired and will insert the old values of the record into the audit table and the new value in the +(emp)+ table.
A constraint is completely different from a trigger. A constraint is like a validation on the data to be inserted. There are different types of constraints.
I will give you a simple example.
You place the not null constraint on the dept column of the emp table. While you try to insert a new record into the emp table the the dept value cannot be null. Oracle will validate the data you are trying to insert into the table with the constraint and will give you an error if the validation fails.
There are other constraints like:
unique key
foreign key
etc.
Precisely a constraint does not handle a database event as a trigger rather it validates the column data.
Edited by: Priyabrat on Sep 25, 2009 12:27 AM -
Peculiar problem in oracle 10g on AIX 5.3.0 With Check constraints
Hi Every One,
I am facing peculiar problem in oracle 10.2.0.1.0,AIX 5.3.0. I created table with check constraints like this
create table test1 (name nvarchar2(1),check (name in('Y','N')));
SQL> create table test1 (name nvarchar2(1),check (name in('Y','N')));
Table created.
SQL> insert into test1 values ('Y');
1 row created.
SQL> COMMIT;
SQL> select from test1 where name = 'Y';* Why this statement is n't working
no rows selected
SQL> select * from test1;
N
Y
ANOTHER INTERSTING ONE IS
SQL> select * from test1 where name in('Y'); Why this statement is n't working
no rows selected
SQL> select * from test1 where name in('Y','Y'); it's working
N
Y
SQL> select * from test1 where name in('','Y'); it's working
N
Y
SQL> select * from test1 where name in('7','Y'); it's working
N
Y
Like
SQL> select * from test1 where name like 'Y'; it's not working
no rows selected
I created a table without check constraints
SQL> create table test2 (name nvarchar2(1));
Table created.
SQL> insert into test2 values ('Y');
1 row created.
SQL> select * from test2;
N
Y
SQL> select * from test2 where name ='Y'; it's working
N
Y
SQL> select * from test2 where name like 'Y'; it's working
N
Y
Database Details
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET WE8MSWIN1252
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
PARAMETER VALUE
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
Why it's happening. Whehter check constraint is valid or not in Equallity operator and like and in .
Whereever we using single character column with check constraint,it's working with Equality operator and like and in.
IT'S WORKING FINE WITHOUT CHECK CONSTRAINTS.WE HAVE TWO AIX MACHINES WITH ORACLE10G.THE SAME PROBLEM OCCURING IN TWO MACHINES
PLEASE HELP ME .
THANK YOU,
WITH REGARDS,
N.VINODHh
Edited by: user3266490 on Dec 3, 2008 2:30 AM -
How to use external functions in check constraints
I created my own function:
create or replace
function if_num_get_num (inval in varchar2)
return number
is
dummy number;
Begin
dummy := to_number(inval);
return dummy;
exception
when others then return null;
end;Can I use it in table check constraint?
When I use standard function INSTR everything is OK.
ALTER TABLE A_S
ADD CONSTRAINT A_S_CHK1 CHECK
(INSTR(NAZWA_ZA, ':') > 0)
ENABLE;but when I try to create it with my function:
ALTER TABLE A_S
ADD CONSTRAINT A_S_CHK1 CHECK
(IF_NUM_GET_NUM(INSTR(NAZWA_ZA, ':')) > 0)
ENABLE;I get a message "Invalid column IF_NUM_GET_NUM"Read the restrictions.
>
Restrictions on CHECK Constraints
A CHECK constraint requires that a condition be true or unknown for every row of the table. If a statement causes the condition to evaluate to false, then the statement is rolled back. The condition of a CHECK constraint has these limitations:
* The condition must be a boolean expression that can be evaluated using the values in the row being inserted or updated.
* The condition cannot contain subqueries or sequences.
* The condition cannot include the SYSDATE, UID, USER, or USERENV SQL functions.
* The condition cannot contain the pseudocolumns LEVEL or ROWNUM.
* The condition cannot contain the PRIOR operator.
** The condition cannot contain a user-defined function.*
>
http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_constraints.htm#ADFNS282 -
10g R2 NVARCHAR2 check constraint problems
Hi, Thanks for taking a look...
I've just installed 10g R2 on Solaris 10 and run into a small problem with NVARCHAR2s.
I have a table with a check constraint to make sure the column is a valid value on an nvarchar2 column. Querying the table for a specific value results in no data found, however the data appears to be intact.
The database NLS_CHARACTERSET is AL32UTF8 and NLS_NCHAR_CHARACTERSET is AL16UTF16.
I think the following script results can show the problem better than I can explain it.
Any suggestions would be appreciated. Thanks.
Mike
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Apr 17 13:51:40 2006
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning and Data Mining options
SQL> @problem_script.sql
SQL> create table foo (
2 bar nvarchar2(10) constraint ck_bar check (bar in ('abc','def'))
3 );
Table created.
SQL> insert into foo values ('abc');
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL> REM Strange. This worked in every version prior to 10g R2.
SQL> REM Why doesn't it work now?
SQL>
SQL> select * from foo where bar = 'abc';
no rows selected
SQL>
SQL> REM Even more strange is why this doesn't work:
SQL>
SQL> select * from foo where bar = N'abc';
no rows selected
SQL>
SQL> REM Stranger still are these two queries:
SQL>
SQL> select bar, decode(bar, 'abc', 'It matches', 'No it doesnt')
2 from foo;
BAR DECODE(BAR,'A
abc It matches
SQL>
SQL> REM This is still strange, but not unexpected given the prior query
SQL>
SQL> select bar, decode(bar, 'abc', 'It matches', 'No it doesnt')
2 from foo
3 where bar = 'abc';
no rows selected
SQL>
SQL> REM Strangest of all is why this DOES work:
SQL>
SQL> alter table foo disable constraint ck_bar;
Table altered.
SQL> select * from foo where bar = 'abc';
BAR
abc
SQL>
SQL>
SQL> REM Regular varchars are unchanged...
SQL>
SQL> create table bar (
2 foo varchar2(10) constraint ck_foo check (foo in ('abc','def'))
3 );
Table created.
SQL> insert into bar values ('abc');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from bar where foo = 'abc';
FOO
abcNope.
SQL> select * from foo where bar = TO_NCHAR('abc');
no rows selected
Of all the things I've tried (and I think I've tried just about everything), only the TO_CHAR(bar) and disabling the check constraint work. The fact that DECODE(bar, 'abc', 'true', 'false') in the select list is also confusing since it's converted there correctly, but not in the WHERE clause. And why does it work as epxected when the constraint is disabled?
My thoughts are that it can't be an Oracle bug, otherwise I'm sure I wouldn't be the first to find it. I've built the instance using the same configuration script I used for the 10g R1 database that works, so the configuration parametes are the same.
More things that don't make sense:
SQL> select dump(bar), dump('abc') from foo;
DUMP(BAR)
DUMP('ABC')
Typ=1 Len=6: 0,97,0,98,0,99
Typ=96 Len=3: 97,98,99
SQL> select dump(bar), dump(to_nchar('abc')) from foo;
DUMP(BAR)
DUMP(TO_NCHAR('ABC'))
Typ=1 Len=6: 0,97,0,98,0,99
Typ=1 Len=6: 0,97,0,98,0,99
Thanks for your help though...
Mike -
How to create this check constraint
create table emplt
( emplt_pk number,
indvl_pk number,
start_dt date,
end_dt date,
lct_fl char(1),
sup_fl char(1),
br_pk number,
nro_pk number,
default_fl char(1) default 'N' );
INSERT INTO emplt
values(
1001, 101, to_date('01-01-2005', 'MM-DD-YYYY' ), NULL, 'Y','N',123,NULL,NULL );
INSERT INTO emplt
values(
1002, 101, to_date('02-01-2005', 'MM-DD-YYYY' ), NULL, 'Y','N',NULL,0001,NULL );
INSERT INTO emplt
values(
1003, 102, to_date('02-01-2005', 'MM-DD-YYYY' ), NULL, 'Y','N',NULL,0001,NULL );
Is it possible to create a check constraint on this table that enforces that for a given indvl_pk, br_pk and nro_pk
there is only one row with dflt_fl = 'Y'?
Thanks in advance!Say,
SQL> create unique index empli_ui on emplt(case default_fl when 'Y' then indvl_pk end,
2 case default_fl when 'Y' then br_pk end,
3 case default_fl when 'Y' then nro_pk end
4 )
5 /
 
Index created.
 
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(1,2,3,'J');
 
1 row created.
 
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(1,2,3,'J');
 
1 row created.
 
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(3,2,1,'A');
 
1 row created.
 
SQL>
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(3,2,1,'A');
 
1 row created.
 
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(3,2,1,'Y');
 
1 row created.
 
SQL>
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(3,2,1,'Y');
insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.EMPLI_UI) violated
 
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(1,2,3,'Y');
 
1 row created.
 
SQL> insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
2 values(1,2,3,'Y');
insert into emplt (indvl_pk,br_pk,nro_pk,default_fl)
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.EMPLI_UI) violatedRgds. -
Displaying an error message coused by check constraint
Hi,
I'm trying to replace oracle error message by my own message.
Form report is throwing an expected error like :
'Error in mru internal routine: ORA-20001: Error in MRU: row= 1, ORA-02290: check constraint ...'
I used the plsql block to handle with that but it doesnt set the my message. After press a button the check constraint validate a date and if data are unexpected then throwing a error which i want to replace by my own.
The process is listed below:
DECLARE
invalid_sql EXCEPTION;
PRAGMA EXCEPTION_INIT (invalid_sql, -02290);
page_error EXCEPTION;
PRAGMA EXCEPTION_INIT (page_error, -20001);
BEGIN
:p12_error := NULL;
EXCEPTION
WHEN invalid_sql THEN
:p12_error := 'In case of sql injection attack some of the statements were forbidden: INSERT, UPDATE, DELETE, DROP, ALTER, TRUNCATE, EXECUTE';
WHEN page_error THEN
:P12_ERROR := 'Please contact your administrator !!!';
WHEN OTHERS THEN
:p12_error := SQLERRM;
END;
P12_ERROR -- hidden item
Then i set the 'success message ' :
&P12_ERROR.
What is wrong that is not showing my message?It not recognoze Init pragma?.
Please give my some points on it!
Edited by: rafix on 2008-12-16 04:31I followed Denes Kubick' way on his blog http://htmldb.oracle.com/pls/otn/f?p=31517:185:17139524101939:::RP,::
where he created process on SubmitThe process is a simple example of error handling in ApEx. It does inserting and at the
same time it handels exceptions. If an exception occurs, it will use a hidden item on the
page to store error messages. At the same time, the success message of that process
(which is what you get after pressing the "Save" button) is &P185_ERROR. item.
Returning to my previous post i got tabular form report where constraint makes error in case of writing 'insert, delete...' after save button where have been pressed. Pragma mechenism is trapping like you wrote exceptions.Ok.
So what i need configure to associate that process to trapped error?
Edited by: rafix on 2008-12-17 05:40 -
MOZCRT19.dll is not valid windows image. please check against your installation disktte. Please help me in this.
== This happened ==
Every time Firefox opened
== User Agent ==
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)This is because mozcrt19.dll file is missing or corrupted. You can replace the corrupted file by following these steps.
Step 1. You can download mozcrt19.dll here:
<del>http://dllcentral<i></i>.com/mozcrt19<i></i>.dll/8<i></i>.00<i></i>.0000/</del>
Step 2. Now navigate the following path:
C:/ Program Files / Mozilla Firefox
Note: C: Drive is the drive where windows is installed.
Step 3. Now restore mozcrt19.dll file in “Mozilla Firefox” folder.
Step 4. Restart your Mozilla Firefox browser. It will work fine.
<i><do not download Firefox components from third party sites, but reinstall the current Firefox version - edited by moderator></i> -
DB Diagram: Modality Difference between NOT NULL and check constraint
Hi,
I am using jdev 11g (11.1.1.10) I am trying to create a db diagram from two tables. I have a FK that is NOT NULL (defined on the column). When i try to display these two tables modality, it does not show up in the diagram. I noticed that there are two ways NOT null can be defined on a table (right click on the db object to edit it; a) under column definitions there is a check box for not null, b) there is a check constraint that one can add to do not null.
I am confused and was wondering whether I must I have check constraints on the database in order to display modality (optional versus mandatory). Logically speaking it does not make any sense though.Hi Susan,
Thanks for your email. I understand that in order to show modality under
UML notation, one must define a COLUMN being NOT NULL instead of defining a check constraint.
I still do not understand how modality (optional versus mandatory) is shown in ERD notation in JDev. I tried flipping ERD/UML notations and made sure icons for tables were showing, but no MODALITY is shown in ERD notation ( an '0" icon or a "|" icon for optional and mandatory). Is it the solid line versus dotted line in the ERD diagram? I am confused because generally under Crawfoot ERD notation '0" icon or a "|" icon is shown for modality.
Modality gets picked up in jdev diagram when COLUMN not null is specified and UML notation is used
ALTER TABLE DETAILAJ MODIFY EMPID not null;
Modality does not get picked up in jdev db diagram when check constraint is specified and UML notation is used
ALTER TABLE DETAILAJ
ADD CONSTRAINT CK_NN_DETAILAJ__EMPID CHECK(EMPID IS NOT NULL) ;
Another question i have related to the matter mentioned above is as follows. Since I want to see modality in db diagram, it follows that I must define a column as not null instead of a check constraint. I must also use NO VALIDATE on NOT NULL column because i have prior data that does not meet the new restriction. I noticed that if i use the following syntax to define a NOT NULL column, two things happen.
a) A constraint is defined as not null automatically and a system generated name is given to the constraint.
b) DB diagram in Jdev does not show the modality.
My question is whether there is a way to see modality in this case.
alter table DETAILAJ
MODIFY EMPID NOT NULL ENABLE NOVALIDATE ;
Edited by: user11219846 on Nov 19, 2009 11:07 AM -
All I could come up with is this:
check (column_name like '____');
But That doesn't enforce the first character to be a letter and the other three to be numbers.Hi,
"PS: Why the f***you have so many subforums here?"
Because it is much easier to seperate and let experts answer to specific details of SQL Server. SQL Server is not a small product as many people think ;-)
Here is the solution:
CREATe table SampleA (A INT, B VARCHAR(MAX) CHECK (B LIKE '[A-Z][0-9][0-9][0-9]'))
INSERT INTO SampleA VALUES (1,'0000')
Msg 547, Level 16, State 0, Line 2
The INSERT statement conflicted with the CHECK constraint "CK__SampleA__B__38B96646". The conflict occurred in database "master", table "dbo.SampleA", column 'B'.
The statement has been terminated.
INSERT INTO SampleA VALUES (1,'L000')
--(1 row(s) affected)
INSERT INTO SampleA VALUES (1,'L0001')
Msg 547, Level 16, State 0, Line 2
The INSERT statement conflicted with the CHECK constraint "CK__SampleA__B__38B96646". The conflict occurred in database "master", table "dbo.SampleA", column 'B'.
The statement has been terminated.
-Jens
Jens K. Suessmeyer http://blogs.msdn.com/Jenss -
How to modify a CHECK constraint.
We need to modify a check constraint to allow new values. Is there a way we can modify the existing constraint or should we drop and recreate including new values.
Example:
We have a table SLOG and SNO is a column accepting numeric values. Currently there is a constraint on this column so that it accepts values of 1,2,3,4. Now I want to insert a value of 5 to this column. Since there is a CHECK constraint on this column it prevents the value of 5.
So the constraint needs to be modified. Is there a way we can modify the constraint using a DDL command (like ALTER TABLE) or should I drop and re create the constraint.
Thanks in advance.
BalajiHello,
Is there a way we can modify the constraint using a DDL command You can just MODIFY the state of your constraint ( constraint_state ).
So, if you want to modify the definition of your constraint you have to drop and create the CHECK constraint with its new definition.
Sorry, when I was writing my post, I didn't see the question was already answered.
Best regards,
Jean-Valentin
Edited by: Lubiez Jean-Valentin on Jul 11, 2010 11:04 AM
Maybe you are looking for
-
Finding songs in iTunes after you change name of file
Hi: Ok, sometimes my songs are not titled as I would like them to be. For example, a song might be titled "Dido--thanks.mp3" and it lives in the Various artists folder simply because iTunes automatically put it there when I imported it. I want to ren
-
Susbtitution Variables in rules file to replace a member name with another
Hi everybody, Can I use substitution variables to replace a member name with another name in rules file? Please let me know if we can use substitution vars. Essbase version :11.1.2 Thanks, K.as
-
How to get icon for hardrive(s) to show up?
Hi--How do I get the icons for hardrive(s) to show up? Odd. Thanks!
-
Synchroniz​ation of M-Series cards via RTSI and ANSI C?
Hi! This is my first post and I'm happy to be here. I tried to search as thoroughly as possible, but if this has been answered elsewhere, I'd be grateful for a hint/link nevertheless. System: Win 2000 Pro with NI-DAQmx (part of NI-DAQ 7) 2x PCI-6220M
-
I bought an HP e printer (#4620) to print from my iPad. I've been told it is not compatible with Apple's airprint. Has anyone had any experience with the eprinters?