Columns with identical constraints
Hi,
There is a table testtbl:
create table testtbl
(prim_key number,
f1 char(1),
constraint testtbl_pk primary key (prim_key),
constraint testtbl_f1_ck check (f1 in ('0','1'))
);Columns f2, ..., f9 with the same check constraint as f1 need to be added to testtbl.
Can you please let me know if there is a way to do this without repeating the same list of values over and over.
The goal of all this is to find a way to represent somehow boolean data type in Oracle tables. Columns cannot be of boolean data type in Oracle. Char(1) with values '0' and '1' closely represents boolean type (varchar2(1) is identical to char(1)).
It looks like the following type can help:
SQL> create or replace type bool as object
2 (
3 bool_val char(1),
4
5 constructor function bool(b1 in number) return self as result
6 )
7 /
Type created
SQL>
SQL> create or replace type body bool as
2
3 constructor function bool(b1 in number) return self as result is
4
5 begin
6 if b1 = 0 or b1 = 1 then
7 self.bool_val := b1;
8 return;
9 else
10 RAISE_APPLICATION_ERROR(-20001, 'Invalid boolean value.');
11 end if;
12 end;
13
14 end;
15 /
Type body createdNow I can create columns of type bool in any table. Not null constraint is optional:
SQL> create table ztest1 (primkey number, f1 bool not null, f2 bool not null, f3 bool not null);
Table created
SQL> create table ztest2 (primkey number, f4 bool not null, f5 bool not null, f6 bool not null);
Table created
SQL> insert into ztest1 values (1, bool(0), bool(1), bool(1));
1 row inserted
SQL> insert into ztest1 values (2, bool(1), bool(0), bool(0));
1 row inserted
SQL> commit;
Commit completeColumns are easy to use:
SQL> select primkey from ztest1 where f1 = bool(1);
PRIMKEY
2Attempt to use bool() with invalid parameter results in exception:
SQL> insert into ztest2 values (3, bool(0), bool(2), bool(0));
insert into ztest2 values (3, bool(0), bool(2), bool(0))
ORA-20001: Invalid boolean value.I am still having a problem with default constructor of bool: e.g., bool('a') does not raise an exception, unfortunately.
Similar Messages
-
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 fix "Modifying a column with the 'Identity' pattern is not supported"
When doing Code First Migrations my mobile service always errors in the seed method with: 'Modifying a column with the 'Identity' pattern is not supported. Column: 'CreatedAt'. Table: 'CodeFirstDatabaseSchema.Methodology' for the CreatedAt column. All my
models inherit from EntityData.
// Sample model
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Microsoft.WindowsAzure.Mobile.Service;
namespace sbp_ctService.Models
public class Methodology : EntityData
public Methodology()
this.Scenarioes = new List<Scenario>();
public string Id { get; set; }
[Required]
[StringLength(50)]
public string EntryMethod { get; set; }
[Required]
[StringLength(50)]
public string TestDirection { get; set; }
[Required]
[StringLength(50)]
public string PassCriteria { get; set; }
[Required]
[StringLength(50)]
public string Dependency { get; set; }
public bool ExtraInfo { get; set; }
public virtual ICollection<Scenario> Scenarioes { get; set; }
And in my Configuration.cs file during an update here's my seed method:
protected override void Seed(sbp_ctService.Models.sbp_ctContext context)
// This method will be called after migrating to the latest version.
context.Methodologies.AddOrUpdate(
m => m.Id,
new Methodology { Id = "Methodology1", EntryMethod = "P/F", PassCriteria = "P/F", Dependency = "None", ExtraInfo = false, TestDirection = "Round" },
new Methodology { Id = "Methodology2", EntryMethod = "P/F", PassCriteria = "Best", Dependency = "None", ExtraInfo = false, TestDirection = "Round" },
new Methodology { Id = "Methodology3", EntryMethod = "P/F", PassCriteria = "Best", Dependency = "None", ExtraInfo = false, TestDirection = "In/Out" },
new Methodology { Id = "Methodology4", EntryMethod = "P/F", PassCriteria = "Best", Dependency = "None", ExtraInfo = false, TestDirection = "Out" }
For some reason on an update the CreatedAt field is created and given a value of null. So of course on an insert/update it will error because CreatedAt is an Identity field.
I've tried to configure the modelBuilder in my context to tell it that CreatedAt is an identity field, but that still doesn't work.
modelBuilder.Entity<Methodology>()
.Property(m => m.CreatedAt)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
So far the only way to fix this is by commenting out my Seed data, but it's not a fix. I've seen other solutions where you can force it to not serialize certain fields, but I don't know if those solutions apply.So I think this occurs because you might have created the database (Code-first) with POCOs that didn't have the CreatedAt field in them. I think that's what I did and the easiest way to fix it for me was to delete my database and re-create it with my POCOs
inheriting from Entity Data from the very beginning. We were still in development so it worked out for us but I know some people might not be able to do that. Here's what my table looks like after it was created correctly:
USE [database_name]
GO
/****** Object: Table [sbp_ct].[Methodologies] Script Date: 2/24/2015 9:48:45 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [schema_name].[Methodologies] (
[Id] NVARCHAR (128) NOT NULL,
[EntryMethod] NVARCHAR (50) NOT NULL,
[TestDirection] NVARCHAR (50) NOT NULL,
[PassCriteria] NVARCHAR (50) NOT NULL,
[Dependency] NVARCHAR (50) NOT NULL,
[ExtraInfo] BIT NOT NULL,
[Version] ROWVERSION NOT NULL,
[CreatedAt] DATETIMEOFFSET (7) NULL,
[UpdatedAt] DATETIMEOFFSET (7) NULL,
[Deleted] BIT NOT NULL,
[Name] NVARCHAR (MAX) NULL
GO
CREATE CLUSTERED INDEX [IX_CreatedAt]
ON [schema_name].[Methodologies]([CreatedAt] ASC);
GO
ALTER TABLE [schema_name].[Methodologies]
ADD CONSTRAINT [PK_schema_name.Methodologies] PRIMARY KEY NONCLUSTERED ([Id] ASC);
Does yours look something like that? -
Error inserting a row into a table with identity column using cfgrid on change
I got an error on trying to insert a row into a table with identity column using cfgrid on change see below
also i would like to use cfstoreproc instead of cfquery but which argument i need to pass and how to use it usually i use stored procedure
update table (xxx,xxx,xxx)
values (uu,uuu,uu)
My component
<!--- Edit a Media Type --->
<cffunction name="cfn_MediaType_Update" access="remote">
<cfargument name="gridaction" type="string" required="yes">
<cfargument name="gridrow" type="struct" required="yes">
<cfargument name="gridchanged" type="struct" required="yes">
<!--- Local variables --->
<cfset var colname="">
<cfset var value="">
<!--- Process gridaction --->
<cfswitch expression="#ARGUMENTS.gridaction#">
<!--- Process updates --->
<cfcase value="U">
<!--- Get column name and value --->
<cfset colname=StructKeyList(ARGUMENTS.gridchanged)>
<cfset value=ARGUMENTS.gridchanged[colname]>
<!--- Perform actual update --->
<cfquery datasource="#application.dsn#">
UPDATE SP.MediaType
SET #colname# = '#value#'
WHERE MediaTypeID = #ARGUMENTS.gridrow.MediaTypeID#
</cfquery>
</cfcase>
<!--- Process deletes --->
<cfcase value="D">
<!--- Perform actual delete --->
<cfquery datasource="#application.dsn#">
update SP.MediaType
set Deleted=1
WHERE MediaTypeID = #ARGUMENTS.gridrow.MediaTypeID#
</cfquery>
</cfcase>
<cfcase value="I">
<!--- Get column name and value --->
<cfset colname=StructKeyList(ARGUMENTS.gridchanged)>
<cfset value=ARGUMENTS.gridchanged[colname]>
<!--- Perform actual update --->
<cfquery datasource="#application.dsn#">
insert into SP.MediaType (#colname#)
Values ('#value#')
</cfquery>
</cfcase>
</cfswitch>
</cffunction>
my table
mediatype:
mediatypeid primary key,identity
mediatypename
my code is
<cfform method="post" name="GridExampleForm">
<cfgrid format="html" name="grid_Tables2" pagesize="3" selectmode="edit" width="800px"
delete="yes"
insert="yes"
bind="cfc:sp3.testing.MediaType.cfn_MediaType_All
({cfgridpage},{cfgridpagesize},{cfgridsortcolumn},{cfgridsortdirection})"
onchange="cfc:sp3.testing.MediaType.cfn_MediaType_Update({cfgridaction},
{cfgridrow},
{cfgridchanged})">
<cfgridcolumn name="MediaTypeID" header="ID" display="no"/>
<cfgridcolumn name="MediaTypeName" header="Media Type" />
</cfgrid>
</cfform>
on insert I get the following error message ajax logging error message
http: Error invoking xxxxxxx/MediaType.cfc : Element '' is undefined in a CFML structure referenced as part of an expression.
{"gridaction":"I","gridrow":{"MEDIATYPEID":"","MEDIATYPENAME":"uuuuuu","CFGRIDROWINDEX":4} ,"gridchanged":{}}
ThanksIs this with the Travel database or another database?
If it's another database then make sure your columns
allow nulls. To check this in the Server Navigator, expand
your DataSource down to the column.
Select the column and view the Is Nullable property
in the Property Sheet
If still no luck, check out a tutorial, like Performing Inserts, ...
http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/index.jsp
John -
Hi,
I have activated migrations on my Azure Mobile Services project. I filled the new seed function Inside the Configuration.cs class of the migrations. If the tables are empty, the seed function is going without any problems. When my AddorUpdate tries to update
the first object I get the error in the inner exception : "Modifying a column with the 'Identity' pattern is not supported. Column: 'CreatedAt'. Table: 'CodeFirstDatabaseSchema.Category'."
Part of my code is as follows:
context.categories.AddOrUpdate(
new Category { Id="1", Code="GEN", Text="General"},
new Category { Id="2", Code="POL", Text="Politics"},
new Category { Id="3", Code="FAS", Text="Fashion"},
new Category { Id="4", Code="PEO", Text="People"},
new Category { Id="5", Code="TEC", Text="Technology"},
new Category { Id="6", Code="SPO", Text="Sport"},
new Category { Id="7", Code="LIV", Text="Living"}
Any help is welcomed. Thanks.
Faical SAID Highwave CreationsThis occurred to me because I changed my POCO models to inherit from EntityData after I had already created my database without the extra Azure Mobile Service properties (UpdatedAt, CreatedAt, Deleted). The only way I fixed it was to drop the database and
start over with my classes inheriting from EntityData from the beginning. If you can't do that then I would create a new table with EntityData models and see how that database is created and manually update your tables to match those. Here's an image of one
of my tables from the management console on Azure. You can see that CreatedAt is an index. -
I am using code fist migration and second time I run the service, I got this error.
"Modifying
a column with the 'Identity'pattern
is not supported. Column:
'CreatedAt'.
context.Cars.AddOrUpdate(c => c.Id,
new Car { Id = "60B0891B-C3CF-41A6-9BE0-BCCCE5949E6B", Image = "ic_highlander", Name = "Highlander", Description = "4 SEATER, FULL DAY (10 HRS), DOWNTOWN EXCLUDING INDUSTRIAL ZONE, WITH ENGLISH SPEAKING DRIVER", SeatingCapacity = 4, Luggage = 2, Rates = 20000.00M, AirportCode = "YGN" },
new Car { Id = "BAA205B5-C43F-490E-A83B-81F0EBDA2D97", Image = "ic_super_custom", Name = "Super Custom", Description = "4 SEATER, FULL DAY (10 HRS), DOWNTOWN EXCLUDING INDUSTRIAL ZONE, WITH ENGLISH SPEAKING DRIVER", SeatingCapacity = 4, Luggage = 2, Rates = 20000.00M, AirportCode = "YGN" },
new Car { Id = "DD68E56D-3967-4D32-A959-BEFBCB70FC4B", Image = "ic_mark_ii_grande", Name = "MarkII GRANDE", Description = "4 SEATER, FULL DAY (10 HRS), DOWNTOWN EXCLUDING INDUSTRIAL ZONE, WITH ENGLISH SPEAKING DRIVER", SeatingCapacity = 4, Luggage = 2, Rates = 20000.00M, AirportCode = "YGN" },
new Car { Id = "8EDDC308-FB63-469B-8A6A-B2360D61892D", Image = "ic_hiace_commuter_13", Name = "Hiace commuter", Description = "4 SEATER, FULL DAY (10 HRS), DOWNTOWN EXCLUDING INDUSTRIAL ZONE, WITH ENGLISH SPEAKING DRIVER", SeatingCapacity = 4, Luggage = 2, Rates = 20000.00M, AirportCode = "MDL" }Hi,
Thanks for posting here.
We are looking into this and will update you with solution. Stay tuned for details
Girish Prajwl -
Indices and constraints on XML Tables/Columns (with Schema)
Hi,
I've read a lot of documents by know, but the more I read the more I got confused. So I hope you can help me.
Frist my Oracle Server Version: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit
I've manages to create a table with a column with the type SYS.XMLTYPE and the storage modle "Object Relational" with an XML Schema.
I can insert data and I can execute XQuery statements.
I can also create an XMLTYPE table with my Schema, althoug the tool SQL Developer keeps telling me, that the one column wich is generated within the table is of the type CLOB instead of object realtional (which is what I defined).
The query for that is:
CREATE TABLE ENTRY_XML OF XMLTYPE
XMLTYPE STORE AS OBJECT RELATIONAL
XMLSCHEMA "BBMRI_Entry.xsd" ELEMENT "Entry";
That's where I am, now my questions:
1. What's the difference? I'm aware of the obviouse difference, that with the first way I can add relational columns as well, but apart from that? If I only want to store the xml data, is the second approach always better (especially in regard to my next question)?
2. My schema contains elements with attributes (which contain IDs), which have to be unique. So I tried to add a UNIQUE constraint, but failed. I found this (http://www.oracle.com/technology/sample_code/tech/java/codesnippet/xmldb/constraints/Specify_Constraints.html), but it just doesn't work.
Query: "ALTER TABLE ENTRY_XML CONSTRAINT ENTRY_XML_SUBID_UNQIUE UNIQUE (xmldata."SubId");"
Error: "ORA-01735: invalid ALTER TABLE option"
3. I didn't try yet, but I need to specifiy foreign keys within the XML as well (which is explained in the link at question 2). I guess the solution to question 2 will make this possible as well.
4. Since I can create a UNIQUE constaint for attributes (well, I can't yet, but I hope that this will change soon) I woundered if it would be possible to realize something like auto_increment. Although I see the problem with validating the xml input if the Ids are empty. Any suggestions on that problem? Do I have to query for the highest (free) id before I can insert the new documents?
Well, that's enough for today, I hope someone can help me!
Greetings, FlorianI've read through all the literature (again) and found out, that I did most of the stuff right in the first place. I just missinterpreted the generated tables for the types and wondered why they only contained one column. Well, at least one mistery solved.
But know to make it easier just one question, which might solve all problems I have:
How can I create UNIQUE constraints and FOREIGN KEYS when I have a table or column of the type XmlType with a schema using the object relational storage method?
I found a solution http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14259/xdb05sto.htm#i1042421 (Example 5-12), but it just does not work for me.
I removed the FOREIGN KEY and tried it again and the UNIQUE Key works.
So basically the question is how to retrieve the "AId" Attribute. "XMLDATA"."AId", "XMLDATA"."Attribute"."AId" and "XMLDATA"."Subject"."Attribute"."AId" all do not work.
I've added my schema declarations at the bottom (which I've already successfully registred and used without foreign keys and constraints, so they work).
After I've registered the two schema files 3 types and 11 tables where created. One type for the attribute, one for the study type and one probably to link the attributes to the study types. The tables are one for the attribute, 4 for the content*-elements, 2 for the study type (I don't really know why two) and 4 with strange names starting with "SYS_NT" and then some random numbers and letters (looks alot like some base64 encoded string).
The Query I try to use to create the table is: (The table "Attribute" already exists and contains a field "ID", which is it's PK.)
CREATE TABLE STUDYTYPE_XML
OF XMLType (UNIQUE ("XMLDATA"."STId"),
FOREIGN KEY ("XMLDATA"."AId") REFERENCES ATTRIBUTE(ID))
XMLTYPE STORE AS OBJECT RELATIONAL
ELEMENT "StudyType.xsd#StudyType";
The error I get is:
Error starting at line 1 in command:
CREATE TABLE STUDYTYPE_XML
OF XMLType (UNIQUE ("XMLDATA"."STId"),
FOREIGN KEY ("XMLDATA"."AId") REFERENCES ATTRIBUTE(ID))
ELEMENT "StudyType.xsd#StudyType"
Error at Command Line:3 Column:37
Error report:
SQL Error: ORA-22809: nonexistent attribute
22809. 00000 - "nonexistent attribute"
Cause: An attempt was made to access a non-existent attribute of an
object type.
Action: Check the attribute reference to see if it is valid. Then retry
the operation.
Attribute-Schema (Attribute.xsd):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:attribute name="AId">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Name" type="xs:string" />
<xs:element name="ContentString" type="xs:string" />
<xs:element name="ContentInteger" type="xs:integer" />
<xs:element name="ContentDouble" type="xs:decimal" />
<xs:element name="ContentDate" type="xs:date" />
<xs:element name="Attribute">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="1">
<xs:element ref="ContentString" />
<xs:element ref="ContentInteger" />
<xs:element ref="ContentDouble" />
<xs:element ref="ContentDate" />
</xs:choice>
<xs:attribute ref="AId" use="required" />
<xs:attribute ref="Name" use="optional" />
</xs:complexType>
</xs:element>
</xs:schema>
Study Type Schema (StudyType.xsd):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:include schemaLocation="Attribute.xsd" />
<xs:attribute name="STId">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:element name="StudyType">
<xs:complexType>
<xs:sequence>
<xs:element ref="Attribute" minOccurs="1" maxOccurs="unbounded" />
<xs:element ref="StudyType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute ref="STId" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Edited by: alwaysspam on Sep 8, 2010 5:35 PM -
Null values v IOT with primary constraint
Hi gurus.
I've overheard boss' conversation with client, who complaints that one of the columns in a system IOT table with NOT NULL and PRIMARY KEY returns nulls.
Do you have any ideas? I do not have access to this DB, I just wonder, how it could be and what are these points, that we should start with.
Thank you in advance,
Maria.ou, sorry if I was not so clear, but I'm absolutely calm and even more: it's not my responsibility at all to fix that problem :-))
all that I wanted is just to find some weak places where the reason of the problem could exists and give it my boss while he is busy with his time consuming project (in short, i just wanted to help him to resolve it, not waiting while he will ask me to do that). nobody is in panic, everything is ok in a world.
clear description:
client has a system table (IOT) that sometimes returns null values from column with NOT NULL and PRIMARY KEY constraint. as I remember from school, it's impossible. client wonders if it's an Oracle 9i bug and upgrade to 10g will fix it, or it's a block corruption. I do't know the answer, that's why I'm asking you, Oracle's gurus.
Thank you all,
M. -
How to prevent duplication on a column with condition
Hello everyone,
I need some advice here. At work, we have an Oracle APEX app that allow user to add new records with the automatic increment decision number based on year and group name.
Says if they add the first record , group name AA, for year 2012, they get decision number AA 1 2013 as their displayed record casein the report page.
The second record of AA in 2013 will be AA 2 2013.
If they add about 20 records , it will be AA 20 2013.
The first record for 2014 will be AA 1 2014.
However, recently , we get a user complaint about two records from the same group name have the same decision number.
When I looked into the history table, and find that the time gap between 2 record is just about 0.1 seconds.
Besides, we have lookup table that allows admin user to update the Start Sequence number with the restraint that it has to be larger than the max number of the current group name of the current year.
This Start sequence number and group name is stored together in a table.
And in some other special case,user can add a duplicate decision number for related record. (this is a new function)
The current procedure logic to add new record on the application are
_Get max(decision_number) from record table with chosen Group Name and current year.
_insert into the record table the new entered record with decision number + 1
_ update sequence number to the just added decision number.
So rather than utitlising APEX built-in automatic table modification process, I write a procedure that combine all the three process.
I run some for loop to continuously execute this procedure, and it seems it can autotically generate new unique decision number with time gap about 0.1 second.
However, when I increase the number of entry to 200, and let two users run 100 each.
If the time gap is about 0.01 second, Duplicate decision numbers appear.
What can I do to prevent the duplication ?
I cannot just apply a unique constraint here even for all three columns with condition, as it can have duplicate value in some special condition. I don't know much about using lock and its impact.
This is the content of my procedure
create or replace
PROCEDURE add_new_case(
--ID just use the trigger
p_case_title IN varchar2,
p_year IN varchar2,
p_group_name IN VARCHAR2,
--decisionnumber here
p_case_file_number IN VARCHAR2,
--active
p_user IN VARCHAR2
AS
default_value NUMBER;
caseCount NUMBER;
seqNumber NUMBER;
previousDecisionNumber NUMBER;
BEGIN
--execute immediate q'[alter session set nls_date_format='dd/mm/yyyy']';
SELECT count(*)
INTO caseCount
FROM CASE_RECORD
WHERE GROUP_ABBR = p_group_name
AND to_number(to_char(create_date, 'yyyy')) = to_number(to_char(date_utils.get_current_date, 'yyyy'));
SELECT max(decision_number)
INTO previousDecisionNumber
FROM CASE_RECORD
WHERE GROUP_ABBR = p_group_name
AND to_number(to_char(create_date, 'yyyy')) = to_number(to_char(date_utils.get_current_date, 'yyyy'));
IF p_group_name IS NULL
THEN seqNumber := 0;
ELSE
SELECT seq_number INTO seqNumber FROM GROUP_LOOKUP WHERE ABBREVATION = p_group_name;
END IF;
IF caseCount > 0 THEN
default_value := greatest(seqNumber, previousdecisionnumber)+1;
ELSE
default_value := 1;
END IF;
INSERT INTO CASE_RECORD(case_title, decision_year, GROUP_ABBR, decision_number, case_file_number, active_yn, created_by, create_date)
VALUES(p_case_title, p_year, p_group_name, default_value, p_case_file_number, 'Y', p_user, sysdate );
--Need to update sequence here also
UPDATE GROUP_LOOKUP
SET SEQ_NUMBER = default_value
WHERE ABBREVATION = p_group_name;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
logger.error(p_message_text => SQLERRM
,p_message_code => SQLCODE
,p_stack_trace => dbms_utility.format_error_backtrace
RAISE;
END;
Many thanks in advance,
AnnWhy not using a sequence for populating the decision_number column ?
Sequence values are guaranteed to be unique so there's no need to lock anything.
You'll inevitably have gaps and no different groups will have the same decision_number in common.
Having to deal with consecutive numbers fixations you can proceed as
with
case_record as
(select 2012 decision_year,'AA' group_abbr,1 decision_number from dual union all
select 2012,'BB',2 from dual union all
select 2012,'AA',21 from dual union all
select 2012,'AA',22 from dual union all
select 2012,'BB',25 from dual union all
select 2013,'CC',33 from dual union all
select 2013,'CC',34 from dual union all
select 2013,'CC',36 from dual union all
select 2013,'BB',37 from dual union all
select 2013,'AA',38 from dual union all
select 2013,'AA',39 from dual union all
select 2013,'BB',41 from dual union all
select 2013,'AA',42 from dual union all
select 2013,'AA',43 from dual union all
select 2013,'BB',45 from dual
select decision_year,
group_abbr,
row_number() over (partition by decision_year,group_abbr order by decision_number) decision_number,
decision_number sequence_number -- not shown (noone needs to know you're using a sequence)
from case_record
order by decision_year,group_abbr,decision_number
DECISION_YEAR
GROUP_ABBR
DECISION_NUMBER
SEQUENCE_NUMBER
2012
AA
1
1
2012
AA
2
21
2012
AA
3
22
2012
BB
1
2
2012
BB
2
25
2013
AA
1
38
2013
AA
2
39
2013
AA
3
42
2013
AA
4
43
2013
BB
1
37
2013
BB
2
41
2013
BB
3
45
2013
CC
1
33
2013
CC
2
34
2013
CC
3
36
for retrieval (assuming decision_year,group_abbr,decision_number as being the key):
select decision_year,group_abbr,decision_number -- the rest of columns
from (select decision_year,
group_abbr,
-- the rest of columns
row_number() over (partition by decision_year,group_abbr order by decision_number) decision_number
from case_record
where decision_year = :decision_year
and group_abbr = :group_abbr
where decision_number = :decision_number
DECISION_YEAR
GROUP_ABBR
DECISION_NUMBER
2013
AA
4
if that's acceptable
Regards
Etbin -
Is it possible to create a Column with Conditional Mandatory with another Column?
Is it possible to create a Column with Conditional Mandatory with another Column?
For example
In a Table we have column A, B, C.
A is Primary Column.
B is Optional
C is Conditional Mandatory.
A B
C
12345 ABC
OK
12346 NULL
NULL
12347 ABC
OK
Only if the B Column has the value then only C column should be mandatoryI guess you can't create a condtional mandatory column directly. However, you can use check constraint to on the column
create table YourTable
A int primary key,
B char(3),
C int,
constraint ch_con check(
B
is not null
or C is null -
BCS New Item creation - Column with Name 'ID' does not exist.
Hello All
I´m creating a BCS and i´m getting a strange error. I have created all the operations and created a list based on the external contente type. In my table the column ID is the primary key with identity.
When I use the new item form I get the following error. But the new item is created.
[ArgumentException: Column with Name 'ID' does not exist.]
Microsoft.SharePoint.BusinessData.Infrastructure.GenericAdapterObject.get_Item(String key) +19563585
Microsoft.SharePoint.BusinessData.Infrastructure.RuleInterpretingTypeReflector.Get(ITypeDescriptor typeDescriptor, ITypeDescriptor instanceRootTypeDescriptor, Object instance) +59
Microsoft.SharePoint.BusinessData.Infrastructure.CompositeIdentifier.GetIdentity() +668
Microsoft.SharePoint.BusinessData.Runtime.EntityRuntime.Create(IEntity thisEntity, IFieldValueDictionary fieldValues, Identity identity, AssociationEntityInstancesDictionary associationInfo, ILobSystemInstance lobSystemInstance) +2386
Microsoft.SharePoint.BusinessData.MetadataModel.Static.Entity.Create(IFieldValueDictionary fieldValues, ILobSystemInstance lsi) +82
Microsoft.SharePoint.SPListDataSource.InsertItem(SPListItem itemToInsert, IDictionary dictValues) +1671
[SPException: Failed to create a list item for this external list based on the Entity (External Content Type) '...' in EntityNamespace '....'. Details: Column with Name 'ID' does not exist.]
Microsoft.SharePoint.WebPartPages.DataFormWebPart.InsertCallback(Int32 affectedRecords, Exception ex) +23989128
System.Web.UI.DataSourceView.Insert(IDictionary values, DataSourceViewOperationCallback callback) +4064980
Microsoft.SharePoint.WebPartPages.DataFormWebPart.FlatCommit() +378
Microsoft.SharePoint.WebPartPages.DataFormWebPart.HandleOnSave(Object sender, EventArgs e) +24
Microsoft.SharePoint.WebControls.SaveButton.OnBubbleEvent(Object source, EventArgs e) +691
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +70
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981
Thanks for the help,
Regards,
AndréHello All,
I already found the problem and it was an error in a trigger in the database.
Thanks.
Regards,
André -
How to create auto increment value in my column using identity ?
hi Team,
I have an requirement where i create an auto increment value ,with my table column
Create table Temp(
DeptID int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50),
Emailid nvarchar(50),
Phone varchar(50)
so this is my table structure ,Here my column name is
Deptid here i need to creat an autoincrement value with today's date like below
ex:STM0000120012015
STM0000221012015
STM0000322012015(Currentdate)
.......................................... like this
Here i need only one column like identity column with the given incremental order,not more than one column
so can u pls help me out any one.
Thanks!Here the output came like this ,
1 STM0000120150121
2 STM0000220150121
3 STM0000320150121
4 STM0000420150121
5 STM0000520150121
6 STM0000620150121
7 STM0000720150121
8 STM0000820150121
9 STM0000920150121
10 STM00001020150121 --see this exceed length
and here i dnt need to increment that Stm000010,Here my output will come like this, idnt need to increment my charcter size
1 STM0000120150121
2 STM0000220150121
3 STM0000320150121
4 STM0000420150121
5 STM0000520150121
6 STM0000620150121
7 STM0000720150121
8 STM0000820150121
9 STM0000920150121
10 STM0001020150121
11 STM0001120150121
12 STM0001220150121
so here i dont need to increment my charcter length(16)
The length should be STM(3char)+00001(5Charcters)+CurrentDateFormat,
see the above suggested o/p
so can u pls help me out Dimant -
Urgent!!!. Need Help with @@identity
Hi,
I am migrating T-SQL queries to PL/SQL. I have some queries in SQL Server like "Insert into tble(col2, col3, col4) values(val2, val3, val4);select col1, col2, col3 from tble where col1=@@identity" When I use Sql developer @@identity is replaced with NULL. How do I work around with this query?
I created sequences to update the primary column with seq.nextval and I am using trigger to update the column. I know we can store the sequence value in temp table and get the value from there. Is there any other way I can do this?
Any help on this is greatly appreciated.
Thanks,SQL Developer is a tool; the forum you want for help is "SQL And PL/SQL".
I guess you want seq.currval. If you write the Insert in PL/SQL, you can also use the Returning clause.
Regards,
K. -
IF statement (Compare column with String)
Hi all,
i want to compare the Content of a Column with a text but i always get an error message because of a Syntax error.
It the Content of the column Approval Status is Approved the System should write in the calculated column the String "Approved"
my code:
=IF([ApprovalStatus]="Approved","Approved"," ")
can you help me ? what is wrong here?
thank you in advanceHi
yes, because you should numeric values
Approval Status
Value
Approved
0
Rejected
1
Pending
2
Draft
3
Schedule
4
https://farhanfaiz.wordpress.com/2010/12/17/sharepoint-approval-status-value-of-publishing-pages/
Romeo Donca, Orange Romania (MCSE, MCITP, CCNA) Please Mark As Answer if my post solves your problem or Vote As Helpful if the post has been helpful for you. -
ORA-01400 - not null column with default value and item with authorization
I've searched - I would think someone has run into this. APEX 3.0.0.00.20 - I've created a simple form on a table. One of the column is a not null column with a default value. I have a select list on that item, but it has security on it - authorization scheme. So, it checks the user and if that user isn't of the right role, it will not even display that item. However, APEX appears to still send in the column in its sql! So, the default value is useless, it sends in null each time. Even if I set the default at the Item level, I get null. Argg. That's got to be a bug...
In debug, I do not see the item listed at all. It's not used. That's fine - but why is it trying to insert the value? I would think it would leave it off??? I think because the item is associated with a database column. But, getting around this is ugly. Having to create a hidden item for each one, and then check to see if I need to take the list value... horrible. Any way to get around this???I should add - I guess I can always put my own custom process in to replace the DML. Just seems like a simple thing - if the value doesn't appear on the debug, isn't set with any default value... don't include it in the DML.
Maybe you are looking for
-
How to write text vertically in an table cell?
Is it possible to make a table cell where the text would be written along a vertical base line? I found how to make a text box and rotate it vertically. How may I place such a text box in a table cell? dan
-
SAP NOTE: 1787850 - ESS Config EHP6
1787850 - RDS for employee & manager self service in NW portal V3.606 Hi all, Can we use above note for general SAP ESS config or is it just for RDS! Also please send me any other useful links for portal config. What extent of Enterprise portal knowl
-
got new iMac, I had completed the migration from PC to new iMac, but still unable to see all the apps and music that were saved from the old PC to new iMac. Please help.
-
I need to clean the inside of the glass on my F2210, and I need a Torx scredwriver to get into it. I currently do not have any, will have to buy one. Does anyone know what size Torx it takes?
-
Bridge module fail at stage 2 building
hi, Im trying to build bridge & tun modules to enable networking with qemu. I ran make modules in my kernel26suspend2 dir and got the following output: Building modules, stage 2. MODPOST 226 modules WARNING: "br_fdb_get_hook" [net/bridge/bridge.ko] u