Default values on insert

This has probably been asked and answered, but I couldn't find the answer
when searching the newsgroups. On most of my database tables, there is a
date column to store the date when a row was added (it is never changed
after insert). Without Kodo JDO, we would just set the default value for
the column in the database. What is the easiest solution for this with
Kodo?

Is the only way to do what I want is to use InstanceCallbacks?Yeah, I would recommend using jdoPreStore() to set it to the current
date.
The other option is to have a trigger in the database itself override
the value of the "date_created" field to the current time upon insert.
In article <[email protected]>, Frank Riley wrote:
Tom Davies <[email protected]> wrote in
news:b5o7dg$gak$[email protected]:
Frank Riley wrote:
This has probably been asked and answered, but I couldn't find the
answer when searching the newsgroups. On most of my database tables,
there is a date column to store the date when a row was added (it is
never changed after insert). Without Kodo JDO, we would just set the
default value for the column in the database. What is the easiest
solution for this with Kodo?You can set a default in the constructor of your persistent class:
class Foo {
public Foo(String v)
if (v == null)
v = "xyz";
private String v;
}But, for what I'm doing, this would set the field to the time the object
was created, not the time the object was persisted to the database. Is
the only way to do what I want is to use InstanceCallbacks?--
Marc Prud'hommeaux [email protected]
SolarMetric Inc. http://www.solarmetric.com

Similar Messages

  • I Cant insert all values to the table But only Default Values r inserted?

    Hai,
    i can insert only default values to the database. Other values are not shown in DB.
    Steps I have done so far:
    I have created EO based on VO and VO has the query : select * from emp. Attached to AM.
    That AM is attached to the Page. The page consists of employeed details and SAVE button.
    Set controller for that page and CO-PR calls create method in AM .
    Default values for who columns and SLNo also set through sequence.
    In CO-PFR I call apply method which commits the data.
    when i run the page and giving values it is not inserted into table but only default values are inserted.
    I checked with System.out.println(getattribute("my attr").toString()). It send output correctly.
    But y other values are not inserted.?
    Anybody plz plz help me in this regard. I am struggling with this for last 1 week. I have to apply this to another realtime scenorio? Deadline is near.
    Regards,
    Lakshmi Chandiran

    Hai Prince,
    Thanks for your immediate response. pls find my codes written in EO,AM,CO.
    In VO i havent added anythig xcept the query.
    The following fields are only getting inserted in the table.
    My EOImpl code:
    public void create(AttributeList attributeList) {
    super.create(attributeList);
    System.out.println("NOW I AM IN CREATE METHOD");
    OADBTransaction transaction = getOADBTransaction();
    Number EMP_ID = transaction.getSequenceValue("Employeeid");
    setEmpId(EMP_ID);
    setCreationDate(transaction.getCurrentDBDate());
    setStartDate(transaction.getCurrentDBDate());
    setLastUpdateDate(transaction.getCurrentDBDate());
    setCreationDate(transaction.getCurrentDBDate());
    VO:
    select * from emp1
    AM:
    public void saveForm()
    OAViewObjectImpl empvo = getEMP_VO();
    System.out.println("NOW I AM IN AM SAVEFORM OF EMTS");
    if ( !empvo.isPreparedForExecution())
    empvo .executeQuery();
    Row prow = empvo .createRow();
    empvo .insertRow(prow);
    prow.setNewRowState(Row.STATUS_INITIALIZED) ;
    System.out.println("NOW I AM IN ROW CREATED");
    public void commitdata()
    System.out.println("commitMethod()") ;
    getDBTransaction().commit();
    CO:PR & PFR:
    public void processRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processRequest(pageContext, webBean);
    if(!pageContext.isFormSubmission())
    pageContext.getApplicationModule(webBean).invokeMethod("saveForm",null);
    public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
    super.processFormRequest(pageContext, webBean);
    OAApplicationModule EMP_AM = pageContext.getApplicationModule(webBean);
    OAViewObject vo = (OAViewObject)EMP_AM.findViewObject("EMP_VO");
    if ( pageContext.getParameter("BtnSave") != null )
    pageContext.getApplicationModule(webBean).invokeMethod("commitdata");
    s1 = (String)vo.first().getAttribute("Empname");
    s12 = (String)vo.first().getAttribute("Emptype");
    s3 = (String)vo.first().getAttribute("Emporg");
    s4 = (String)vo.first().getAttribute("Empcity");
    System.out.println(" values are " + s1+s2+s3+s4);
    here i can get the values correctly printed in output as entered in the form.
    I dont know where the problem is.
    plz help me.
    Thanks in advance,
    Regards,
    Lakshmi Chandiran

  • Using default values in INSERT INTO..SELECT..

    Hi,
    I like to do following insert in Oracle 10g
    INSERT
    INTO tab1
    x1,
    x2
    SELECT
    NVL(y1,DEFAULT),
    y2
    FROM tab2
    but oracle throws missing expression error. I don't want to substitute default values as it involves code change for any default value change. I suppose Oracle changes context to tab2 while SELECT, but is there any way to accomplishing the above INSERT?
    Edited by: ponn_raj on Jan 14, 2009 4:52 AM

    Hi,
    Welcome to the forum!
    DECLARE
      var number;
    BEGIN
        INSERT INTO test
            (col1,
             col2)
        VALUES
            (1,
             NVL(var, 0));
        COMMIT;
    END;
    /Also you can create the table and assign default values to the columns that you want. See [CREATE TABLE|http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm#i2095331].
    From the link above:
    DEFAULT
    The DEFAULT clause lets you specify a value to be assigned to the column if a subsequent INSERT statement omits a value for the column. The datatype of the expression must match the datatype of the column. The column must also be long enough to hold this expression.
    The DEFAULT expression can include any SQL function as long as the function does not return a literal argument, a column reference, or a nested function invocation.
    Regards,
    Edited by: Walter Fernández on Jan 14, 2009 10:44 AM

  • Default values for Insert and Update

    What is the best way to default the current sysdate for a date column on a table when doing an insert or update through a form? And related to this, what is the best way to default the current user (APP_USER) for a varchar2 column when doing an insert or update through a form?
    For these columns, I want to display them on a report, but they should be hidden on the form because I would like to have the app default the values to sysdate and APP_USER. However, when I have tried to use the table default values in "user interface defaults" and using either :APP_USER or &APP_USER or SYSDATE, it only shows this literal value on the form (item is not hidden while I debug this). It does not show the actual value I'd want, such as "user1". Does this make sense?
    Thanks for your help.
    -Reid

    I think triggers are the best device.
    Scott

  • How to insert a default value into MS server in java - help please

    hi
    suppose if i have a table and one of the column has a default value when the table was created. how can i insert the default value into this column? assuming that the column is the second column and i can't specify the column name when inserting. thanks.

    thanks for ur response, so if i have insert statement as follow
    insert into someTable values (1,'val1', 'val2', 'val3', 'val4')
    and column 3 has default value = DEFAULT
    then, to insert default value, my insert statement will look like this
    insert into someTable values (1,'val1', 'val3', 'val4')
    but the number of values will not match the number of columns.

  • Best way to put the default values for the Form Items

    Hi,
    I am having a form with lot of default values as mentioned below..
      Field                      value 
      created by             :APPL_USER
      creation_date         SYSDATE
      last_updated_by     :APPL_USER
      last_update_date    SYSDATE
      item1                     value1
      item2                     value2Currently I am using Computation -> After Submit.....so whenever we create/update a record...these computaion takes place and the default values get inserted....THIS IS WORKING PERFECTLY FINE.
    I want to know..if this approach is fine OR we may have some better approach to acheive this...????
    Thanks,
    Deepak

    Deepak,
    Sample trigger code:
    CREATE OR REPLACE TRIGGER  "BINS1_APPLICATION_TBL"
       BEFORE INSERT
       ON APPLICATION_TBL    FOR EACH ROW
    BEGIN
       --  Description: Insert creation_dt, creation_id,
       --              lst_updt_dt and lst_updt_id
       --  Maintenance:
       --  Date        Actor           Action
       --  ====        =====           ======
       --  20-Aug-2009 J. Wells         Create.
       :NEW.creation_id := V('APP_USER');
       :NEW.creation_dt := SYSDATE;
       :NEW.lst_updt_dt := :NEW.creation_dt;
       :NEW.lst_updt_id := :NEW.creation_id;
       SELECT APPLICATION_seq.NEXTVAL
         INTO :NEW.APPLICATION_seq
         FROM DUAL;
    END bins1_APPLICATION_tbl;
    ALTER TRIGGER  "BINS1_APPLICATION_TBL" ENABLE
    /Jeff

  • Msql and o8i - using a default value in an insert

    1. In an Oracle 8i Enterprise DB I have a primary key in table FOO called FOO_ID, it's SQL description is:
    FOO_ID NUMBER DEFAULT TO_CHAR(sysdate, 'HH24MMSSMMDDYY') NOT NULL
    1.5 I test via TOAD inserting a record into the DB without specifying FOO_ID, but specifying other values in the table row. I commit the data. When I commit the table correctly fills in FOO_ID with a time/date stamp per the above definition.
    2. I run wtgpack and create an application which uses this table. I check the SQL code to make sure the column definition is copied to the snapshot which will be the basis for Oracle 9i Lite mobile DB on my laptop.
    3. I run msync.exe and get the DB.
    4. I run msql to make sure the data replicated ok. It did.
    5. I run an INSERT statement not specifying a primary key hoping that the default will be used. For example,
    "INSERT INTO FOO (FOO_TYPE) VALUES ('Test Type')";
    I get the following error from msql:
    [POL-3221] null key in primary index
    The questions is, why isn't the O9iLite DB using the default value when creating the new record/row?
    Thanks,
    Z

    Danny is spot on, but a little elaboration for the beginner:
    childValue == "yes" asks whether these two are the exact same String object. There are times when that's true, but it's unlikely. Instead, use String equals() ( childValue.equals("yes") ) to ask whether the two have the same value.
    With the simple class Danny suggests:
    class Vessel {
       private boolean assessed;
       private int stenosis;
       public boolean isAssessed() { return assessed; }
    }All you need in the loop is
    Iterator vessels = vesselAssessed.values().iterator();
    while (vessels.hasNext()) {
       Vessel vessel = (Vessel) vessels.next();
       if (vessel.isAssessed()) {
    }

  • How to insert into default values in onli 1 column of a table

    if u create a table with onli 1 column
    which can accept a default value of say
    only 100.
    then how do u actualli enter values into the table.
    is there any data dictionary which stores details about default
    values of a table

    The default value for a column is the value that will be stored
    for that column if you do not provide one in your insert
    statement. If you do provide a value, then it will be stored in
    the column.
    You can query user_tab_columns ( or all_ or dba_)to see the
    default value assigned to a column.

  • Putting default values in an insert statement

    I am using Oracle 11g.
    I have a table called bonus -
    create table bonus (
    rid int ,
    cid int,
    bonus int,
    vdate date,
    amount int
    Earler, the bonus table did not have the vdate and amount columns, so I was able to use insertion syntax as follows -
    insert into bonus (cid,rid,bonus) <--- note this
    select cid, rid, count(*)
    from checkin
    group by cid,rid having
    count(*) > 2;
    However, since I now have two additional fields, I do not know how to do it. I tried something like
    insert into bonus (cid,rid,bonus, sysdate, 20) <--- note the change
    select cid, rid, count(*)
    from checkin
    group by cid,rid having
    count(*) > 2;
    but it failed. So you see that I would like to enter sysdate and 20 as default values into the vdate and amount fields. I am just not able to figure out a way to do it. Please help.
    Thank you.

    You can insert default values like this,
    INSERT INTO bonus (cid
                      ,rid
                      ,bonus
                      ,vdate
                      ,amount)
         SELECT cid, rid, COUNT (*), SYSDATE, 20
           FROM checkin
       GROUP BY cid, rid
         HAVING COUNT (*) > 2;g.

  • Insert default value into account in AP/Invoice service

    How I can insert a default value in account in AP/Invoice ?
    I try use a Formated Search this is an better way?
    declare @conta varchar(20)
    set @conta= '62298000'
    If  $[OPCH.DocType]='S'
    SELECT @conta  FROM [dbo].[PCH1] T0
       WHERE T0.DocNum = $[$20.1.0]

    IF $\[OPCH.DocType] = 'S'
    SELECT '62298000'

  • ALV Grid default values for new rows added with Add/Insert buttons

    Hi!
    Help, please,  to find a way how to set default values for new rows added with Add/Insert buttons in
    ALV Grid.

    I have found salution:
    ALV Grid u2013 Insert row function
    Sometimes we need to assign some default values when we create a new row in a grid using standard ALV Append row button. In our scenario we will see how to assign default values to Airline Code (CARRID), Flight Connection Number (CONNID) and Flight date (FLDATE) when a new row is created. To do that we need to handle DATA_CHANGED event in the program like mentioned below.
    Definition of a class:
    Code:
          CLASS lcl_event_receiver DEFINITION
    CLASS LCL_EVENT_RECEIVER DEFINITION.
      PUBLIC SECTION.
    METHODS:
         handle_data_changed
         FOR EVENT data_changed OF cl_gui_alv_grid
         IMPORTING er_data_changed
                           e_ucomm.
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    Implementation of a class:
    Code:
    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
      METHOD HANDLE_DATA_CHANGED.
        DATA: dl_ins_row TYPE lvc_s_moce.   " Insert Row
          FIELD-SYMBOLS: <fs> TYPE table.    " Output table
    Loop at the inserted rows table and assign default values
        LOOP AT er_data_changed->mt_inserted_rows INTO dl_ins_row.
          ASSIGN er_data_changed->mp_mod_rows->* TO <fs>.
          loop at <fs> into ls_outtab.
            ls_outtab-carrid  = 'LH'.
            ls_outtab-connid  = '400'.
            ls_outtab-fldate  = sy-datum.
            MODIFY <fs> FROM ls_outtab INDEX sy-tabix.
          endloop.
        endloop.
      ENDMETHOD.                    "handle_data_changed
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
    Register the events to trigger DATA_CHANGED event when a new row is created.
    Code:
        CALL METHOD OBJ_GRID->REGISTER_EDIT_EVENT
          EXPORTING
            I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
        CALL METHOD OBJ_GRID->REGISTER_EDIT_EVENT
          EXPORTING
            I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.

  • SQL Loader- Default value is not inserted in table by direct method

    Hi All,
    I am trying to load data from a file to a table by SQL Loader. There is a particular date column which I am not loading from the File but have used a Default constraint to put SYSDATE in it. When I am using direct method load then it is not inserting nothin in this column but in conventional method it is inserting SYSDATE. But I want to do the load by direct method. Can anybody provide me a solution as how to load default value in direct method?
    Thanks & regards.
    Sudipta

    For this special case, you can specify:
    column_name SYSDATE
    in your SQL*Loader control file.

  • How to insert row where DB date field has default value.

    APEX 4.1, Oracle 11.2
    I'm trying to insert a row using "javascript:addRow();" where the report query is an SQL Query (Updateable Report).
    1)  Several of the fields are display-only with defaulted values.
    2)  No problem with the VARCHAR2 fields.
    3)  And if RUN_DT is a text field, the insert works.
    4)  But I get errors when trying to make RUN_DT (DD-MON-YYYY) display-only and default it to P63_RUN_DT.  I display P63_RUN_DT so I see it is correct.
    Now, this is not a new question.  See:
    Error inserting sysdate with time in tabular form region  https://forums.oracle.com/thread/2551916  (Not answered)
    Date value in tabular form  https://forums.oracle.com/thread/2478358 (Not answered)
    Help! Unable to set default date value for Tabular form DB date field! https://forums.oracle.com/thread/2473208  (Not answered)
    Default Value Date Picker Field https://forums.oracle.com/thread/2468973  (Not answered)
    Tabular Form Default Value PL/SQL https://forums.oracle.com/thread/2464192  (Not answered)
    Display 1st region invoice date into tabular form invoice date column. https://forums.oracle.com/thread/2458561  (Not answered)
    Default System date and time in Tabular form https://forums.oracle.com/thread/2449615 (Not answered)
    Setting default value of Tabular form item is not working https://forums.oracle.com/thread/2396024 (Not answer)
    apex tabular form https://forums.oracle.com/thread/2337098 (Not answered)
    Various folks recommended using Default PL/SQL and SYSDATE when SYSDATE was the desired default value.  That worked for some and not for others.  I could not get it to work for me.  The errors I receive are "•Column must have a value. (Row 1) " and "ORA-01410: invalid ROWID".   I believe the ROWID error is an example of spurious error cascade caused by the RUN_DT problem.   I believe it will disappear once the RUN_DT problem is solved.
    I will try to replicate on apex.oracle.com
    Thoughts?
    Howard

    Update: At least in my case, it seems the RUN_DT date column cannot be Standard Report Column.  I made it "Display as Text (saves state)".  Standard Report Column works for the defaulted VARCHAR2 columns.  Go figure! 
    (more)  And I could not get it to work with "Item" (P63_RUN_DT) as the Default.   However, it seems to work -- so far -- using Default PL/SQL of TO_DATE(:P63_RUN_DT,'DD-MON-YYYY').

  • How to use Default value in a column in Tabular form in insertion or upda

    Hello,
    I am trying to use Default values so that user need not have to enter data, but when I select default type and put a default value, I see an error message, if I try to add a new row.
    How can I use a default value in a Column in a Tabular Form?
    Gouri
    Edited by: user1046395 on Apr 3, 2009 9:58 AM

    Gouri,
    You can just simply edit to each column's report attribute. For example,
    To set default date,
    Default Type: PL/SQL Expression of Function
    Default: sysdate
    To set default text,
    Default Type: PL/SQL Expression of Function
    Default: *'CLERK'*
    If you still have an error, what is the error message?
    Ittichai

  • Inserting the default value for non existing date

    hello,
    i am designing a matrix report for payslip for month wise in oracle 6i report builder.
    in that i want to display per day working hours of the month.
    i m using following query for achieving my goal :
    select a.paycode,b.empname,c.departmentname,to_char(a.dateoffice,'DD') dateoffice,a.shiftattended,round(decode(a.hw,0,a.mannual_hours,a.hw),0) hw,
    a.ISMANNUAL,A.STATUS
    from tbltimeregister1 a,
         tblemployee  b,
          tbldepartment c
    where a.paycode=b.paycode and
    (a.hw >0 or a.mannual_hours is not null ) and
    a.departmentcode='D05' AND
    a.departmentcode=c.departmentcode and
    a.dateoffice between to_date('01/12/2012','dd/mm/yyyy') and to_date('31/12/2012','dd/mm/yyyy')
    ORDER BY A.PAYCODE,A.DATEOFFICEit is displaying the hours for the date in b/w date ranges exist in master table.
    my problem is that if any date of a month is not in master data ,it should display the given date in DD format with 0 hours , A(absent) status, and null shift by default.
    pl tell me how to modify my query for getting my desirable result.
    Thanking You
    Regards
    Vishal Agrawal

    965354 wrote:
    hello,
    select a.paycode,b.empname,c.departmentname,to_char(a.dateoffice,'DD') dateoffice,a.shiftattended,round(decode(a.hw,0,a.mannual_hours,a.hw),0) hw,
    a.ISMANNUAL,A.STATUS
    from tbltimeregister1 a,
    tblemployee  b,
          tbldepartment c
    where a.paycode=b.paycode and
    (a.hw >0 or a.mannual_hours is not null ) and
    a.departmentcode='D05' AND
    a.departmentcode=c.departmentcode and
    a.dateoffice between to_date('01/12/2012','dd/mm/yyyy') and to_date('31/12/2012','dd/mm/yyyy')
    ORDER BY A.PAYCODE,A.DATEOFFICEit is displaying the hours for the date in b/w date ranges exist in master table.
    my problem is that if any date of a month is not in master data ,it should display the given date in DD format with 0 hours , A(absent) status, and null shift by default.
    pl tell me how to modify my query for getting my desirable result.Your problem isn't exactly clear to me. How do you pass the dates to be compared to the DateOffice column? It will be better to ensure the Master table contain data for each date (with some default values) and you will not have to tweak your sql.
    Below is a possible solution:
    select *
      from
    select a.paycode,b.empname,c.departmentname,to_char(a.dateoffice,'DD') dateoffice,a.shiftattended,round(decode(a.hw,0,a.mannual_hours,a.hw),0) hw,
    a.ISMANNUAL,A.STATUS
    from tbltimeregister1 a,
         tblemployee  b,
          tbldepartment c
    where a.paycode=b.paycode and
    (a.hw >0 or a.mannual_hours is not null ) and
    a.departmentcode='D05' AND
    a.departmentcode=c.departmentcode and
    a.dateoffice between to_date('01/12/2012','dd/mm/yyyy') and to_date('31/12/2012','dd/mm/yyyy')
    union
    select a.paycode,b.empname,c.departmentname,to_char(&date_variable,'DD') dateoffice,null,round(decode(a.hw,0,a.mannual_hours,a.hw),0) hw,
    a.ISMANNUAL,'A'
    from tbltimeregister1 a,
         tblemployee  b,
          tbldepartment c
    where a.paycode=b.paycode and
    (a.hw >0 or a.mannual_hours is not null ) and
    a.departmentcode='D05' AND
    a.departmentcode=c.departmentcode and
    ORDER BY A.PAYCODE,A.DATEOFFICEIf this is not what you are looking for, then
    1. Post a script that helps us to create the Tables required in your query
    2. Some sample data. That includes the data for master table that has missing dates (4-5 rows should suffice)
    3. The expected results from the sample data you posted.
    Please do not forget to mention your version:
    select * from v$version;

Maybe you are looking for