Use of sequence in trigger

I need to ensure that a unique key value is stored in a column. Values must be persistent across DB restores. A Sequence is fine to initially populate the column, but I must also ensure a key is applied to records inserted later (by third-party code unaware of the key column).
If I try to plant a trigger to set the column value to sequence.nextval, compilation error occurs: "PLS-00357: ... Sequence reference ... not allowed in this context."
Are special tactics needed to allow use of sequences in triggers? Can you suggest another approach to enforce key maintenance?

Log in as scott/tiger and do the following:
CREATE SEQUENCE deptno
START WITH 50
INCREMENT BY 10;
CREATE OR REPLACE FUNCTION next_dept
RETURN NUMBER AS
v_new_dept dept.deptno%TYPE;
BEGIN
SELECT deptno.NEXTVAL
INTO v_new_dept
FROM DUAL;
RETURN v_new_dept;
END;
CREATE OR REPLACE TRIGGER new_dept
BEFORE INSERT ON dept
FOR EACH ROW
BEGIN
:NEW.deptno := next_dept();
-- this will fail when next_dept
-- returns 100 because deptno is
-- only 2 digits.
END;
INSERT INTO dept
-- you must provide a dummy deptno
-- to satisfy the PK constraint
VALUES(0, 'SURFING', 'MAUI');
null

Similar Messages

  • Problem using a sequence in a trigger

    I am creating a table, sequence and trigger as below. When I insert into the table I get the error message
    'ORA-04098: trigger 'SIMS2.BEF_INS_MATERIAL_COST' is invalid and failed re-validation'
    I am using TOAD rather than SQL Plus to do all this. Any idea what is causing the problem?
    create table material_costs
    material_id NUMBER(8) not null,
    material_desc VARCHAR2(50),
    material_rate NUMBER(8,2)
    tablespace sims2data;
    create index material_costs_1
    ON material_costs (material_id)
    tablespace sims2index;
    create sequence material_costs_seq
    increment by 1
    start with 1
    nomaxvalue
    nocycle
    noorder
    cache 100;
    create or replace trigger bef_ins_material_cost
    before insert
    on material_costs
    for each row
    begin
    if inserting then
    select material_costs_seq.nextval into new.material_id
    from dual;
    end if;
    end;

    Some older versions of Oracle do not allow the direct assignment of a sequence to the column, so you could try
    CREATE OR REPLACE TRIGGER bef_ins_material_cost
    BEFORE INSERT ON material_costs
    FOR EACH ROW
    DECLARE
    l_seqval NUMBER;
    BEGIN
       SELECT material_costs_seq.nextval INTO l_seqval
       FROM dual;
       :NEW.material_id := l_seqval;
    END; The TOAD editor does not require the :new syntax because new.material_id is, at least potentially, a valid construct, and can only be resolved at compile time by Oracle. Oracle will certainly complain about new.material_id not being declared.
    HTH
    John

  • Using a sequence inside BEFORE TRIGGER

    Hi all,
    I just created a testtable and a sequence to use as a primary key column value for that table.
    I tried to create a BEFORE INSERT trigger on that table and in the trigger i tried to set up the primary key column value using the sequence
    but while compiling i am getting the error "Error(9,30): PLS-00357: Table,View Or Sequence reference 'SEQ_OF_TESTTABLE.NEXTVAL' not allowed in this context"
    My Version:Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
    All the objects created with the same user. I would appraciate any help, thanks all
    EDIT
    I solved the problem using the below
    create or replace
    TRIGGER Bef_Ins_On_Testtable
    BEFORE INSERT ON TestTable
    FOR EACH ROW
    declare
    ntemp_id INT;
    BEGIN
    SELECT SEQ_OF_TESTTABLE.NEXTVAL INTO ntemp_id FROM DUAL ;
    DBMS_OUTPUT.PUT_LINE('İNSERTED');
    :NEW.VSURNAME := 'HAKKİ' ;
    :NEW.NID := ntemp_id;
    END;But i wonder why i can use the sequence(just as seqeunce_name.NEXTVAL) in INSERT statement and why cant in trigger?
    Edited by: user9371286 on 31.Tem.2010 04:15
    Edited by: user9371286 on 31.Tem.2010 04:21
    Edited by: user9371286 on 31.Tem.2010 04:27

    Please post your trigger code and your database version ( the result of: select * from v$version; ).
    Put it between tags, so your example will stay formatted.
    (see: http://forums.oracle.com/forums/help.jspa for more examples regarding tags)
    "PLS-00357: Table,View Or Sequence reference "string" not allowed in this context
        Cause: A reference to database table, view, or sequence was found in an inappropriate context. Such references can appear only in SQL statements or (excluding sequences) in %TYPE and %ROWTYPE declarations. Some valid examples follow: SELECT ename, emp.deptno, dname INTO my_ename, my_deptno, my_dept .FROM emp, dept WHERE emp.deptno = dept.deptno; DECLARE last_name emp.ename%TYPE; dept_rec dept%ROWTYPE;
        Action: Remove or relocate the illegal reference."
    +http://download.oracle.com/docs/cd/B19306_01/server.102/b14219/plsus.htm#sthref13592+
    You can find examples of triggers referring to sequences here, by doing a search on this forum or:
    http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#ABC1032282                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Is there a way to enforce the use of sequences

    is there a way to stop someone from inserting an id without using the sequence?
    CREATE SEQUENCE id_seq
       START WITH 1;
    CREATE TABLE test_table (id_seq NUMBER (4) PRIMARY KEY);
    INSERT INTO test_table
         VALUES (id_seq.NEXTVAL);
    INSERT INTO test_table
         VALUES (2);
    INSERT INTO test_table
         VALUES (id_seq.NEXTVAL);gives us
    ORA-00001: unique constraint (DSAMSTRC.SYS_C0091648) violated
    as it should
    however is there a check constraint of some ilk that ensures that the user is using the sequence when doing inserts?
    so that the second insert
    INSERT INTO test_table
         VALUES (2);gives me some sort of check constraint violation that I'm not using the id_seq.NEXTVAL ?

    Justin:
    One minor problem with your trigger. If the "bad" insert is the first thing done in the session you get:
    SQL> insert into test_table values(25);
    insert into test_table values(25)
    ERROR at line 1:
    ORA-08002: sequence ID_SEQ.CURRVAL is not yet defined in this session
    ORA-06512: at "OPS$ORACLE.TRG_TEST_TABLE", line 4
    ORA-04088: error during execution of trigger 'OPS$ORACLE.TRG_TEST_TABLE'If you want to raise an exception instead of just silently using the sequence as Frank suggests you need something more like:
    create trigger trg_test_table
       before insert on test_table
       for each row
    declare
       l_currval integer;
       no_currval exception;
       PRAGMA EXCEPTION_INIT (no_currval, -8002);
    begin
       select id_seq.currval
       into l_currval
       from dual;
       if( l_currval != :new.id_seq ) then
          raise_application_error( -20001, 'Hey!  Use the sequence' );
       end if;
    exception
       when no_currval then
          raise_application_error( -20001, 'Hey!  Use the sequence' );
    end;John

  • Creation of sequence and trigger for each table!!!!!!!1

    Hi
    I am new to trigger and Sequence field. In one of my database we have many tables with fields for specifing ID numbers. Iam planning to insert the ID field with help of a Sequence and trigger...that trigger fires by adding the sequence value from the dual table. Now the point is here we r having around *60* table with ID field. And i am planning use the above process for each table by creating sequences and trigger for each table.
    Will this affects the performance of database.
    Is there any other option other than the above process, I mean other than creating sequences and trigger for each table.
    PLzz help to resolve this issuee......
    Shiyas
    Edited by: user13170361 on Jun 7, 2010 12:37 AM

    Tiger, I didn't mind about your comment, but the point is try to use
    select NVL(max(a) + 1,1) into i from p1_temp;This line in your trigger code and see what is happening. The problem is with your trigger. You are using group by function and you will not get no_data_found !
    For more help, this is some modification of your code.
    SQL> create table p1_temp (a number(10) primary key, b number(10));
    Table created.
    SQL> create or replace trigger trg_p1_temp
      2  before insert on p1_temp for each row
      3  declare
      4  i number(10);
      5  begin
      6  begin
      7  select NVL(max(a) + 1,1) into i from p1_temp;
      8  exception
      9  when no_data_found then
    10  i := 1;
    11  end;
    12  :new.a := i;
    13  end;
    14  /
    Trigger created.
    SQL> insert into p1_temp(b) values (1);
    1 row created.
    SQL> insert into p1_temp(b) values (2);
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> select * from p1_temp;
             A          B
             1          1
             2          2
    SQL> Edited by: Saubhik on Jun 7, 2010 2:30 AM

  • Sequencing and Trigger on Oracle 9i lite database

    We created a schema (TESTSCHEMA) on Oracle 8.1.7 Enterprise edition and have a created a trigger which will use the sequence object to generate primary key for the table (TEST_TABLE)
    Sequence creation:
    CREATE SEQUENCE TESTSCHEMA.TEST_TABLE_SEQUENCE START WITH 6000 INCREMENT BY 1 MINVALUE 6000 MAXVALUE 6999 NOCACHE NOCYCLE NOORDER ;
    Trigger creation:
    CREATE OR REPLACE TRIGGER TEST_TABLE INSERT BEFORE INSERT ON TEST_TABLE FOR EACH ROW
    DECLARE
    pkValue NUMBER;
    BEGIN
    pkValue := 0;
    Select TEST_TABLE_SEQUENCE.NextVal into pkValue from dual;
    :NEW.TEST_KEY := pkValue;
    END TEST_TABLE_INSERT;
    We have created a snapshot of the schema on mobile server, synchronized the data with the client (Win32 for testing purpose).
    The trigger works fine on the server, but when I run the same query on the lite database with msql it gives me an error:
    [POL-3221] null key in primary index
    I was wondering if Sequence generation and Triggers are supported on Oracle 9i lite database ? Or am I missing out something ??
    Any information/ help is appreaciated
    Thanks
    Neeraj

    You can't use SAVEPOINT / ROLLBACK TO SAVEPOINT statements in the database trigger:
    ORA-04092: cannot SET SAVEPOINT in a trigger
    ORA-04092: cannot ROLLBACK in a trigger
    I am not sure what you need exactly, but you can try this:
    Simulating ROLLBACK TO SAVEPOINT Behavior in a Database Trigger
    http://www.quest-pipelines.com/pipelines/plsql/tips02.htm#JUNE
    Regards,
    Zlatko Sirotic

  • Using oracle sequence in SQL Loader

    I'm using oracle sequence in control file of sql loader to load data from .csv file.
    Controlfile:
    LOAD DATA APPEND
    INTO TABLE PHONE_LIST
    FIELDS TERMINATED BY "," TRAILING NULLCOLS
    PHONE_LIST_ID "seqId.NEXTVAL",
    COUNTRY_CODE CHAR,
    CITY_CODE CHAR,
    BEGIN_RANGE CHAR,
    END_RANGE CHAR ,
    BLOCKED_FREE_FLAG CHAR
    Datafile:
    1516,8,9,9,B
    1517,1,1,2,B
    1518,8,9,9,B
    1519,8,9,9,B
    1520,8,9,9,B
    1521,8,9,9,B
    1) As first column uses oracle sequence, we have not defined that in datafile.
    This gives me error "Can not insert NULL value for last column"
    Is it mandatory to specify first column in datafile, even though we are using sequence?
    2) Another table is referencing PHONE_LIST_ID column (the one for which we using sequence) of this table as a foreign key.
    So is it possible to insert this column values in other table simultaneously? Sequence no. should be same as it is in first table...
    Kindly reply this on urgent basis....

    use BEFORE INSERT trigger
    with
    select your_seq.nextval into :new.id from dual;

  • Suppress auto sequence and trigger DDL for surrogate keys?

    Is there a way to suppress trigger and sequence creation for surrogate keys when export to DDL file?
    I know most of the time the automatic sequence and trigger creation is welcome and very handy.
    However I'm migrating from an old Designer model and there only the needed sequences are created.
    They have a different name and trigger logic is custom (and  generated outside designer).
    There is a lot of package code depending on this. So I prefer to create and use different sequences.
    Is there a way to achieve this? Any tips are welcome.Create

    Hi,
    Note that generating the DDL for Oracle 12c means that it will attempt to use your Oracle 12c Physical model.  So if you normally use Oracle 10g or 11g, you will find that any details from your Oracle 10g or 11g Physical Model will not be included.  So this approach may have other implications for you.
    If you are not using Oracle 12c, there are some relevant properties on the Auto Increment tab of the Relational Model properties dialog for the Column which may help:
    Sequence Name - allows you to specify the name of the Sequence (which can be the name of a Sequence defined in the relevant Physical Model).
    Trigger Name - allows you to specify the name of a Trigger (which can be the name of a Trigger that is defined for the Table in the Physical Model).
    Generate Trigger - unsetting this will stop the Trigger being generated.
    David

  • How to use parallel sequence for split the operation qty. urgent or other o

    PP guru
    My scenario is as follows.
    I ve one material suppose…xyz.
    For that material I' ve created bom, routing.
    In routing I' ve mention only one operation. 0010.
    Now I' ve the production order of 1000 kg.
    I want to use two work centers to run this production order. ( e.g.work center a and b)
    In routing I used work center a.
    In short I want split that operation.
    So what I ve to do or use parallel sequence and how???
    or else is there any other option to split the order to two or more machines/work center?
    Pls explain me in brief.
    Regards,
    Ram

    Hi,
      If you want to carry the production with two different work centers , first you need to split the operation qty.
    For this in the order type dependent parameters OPL8
    in the controlling tab page enable the indicator Cost collector
    and set the default rule as PP2.
      Create a Product cost collector with KKF6N.
       Now in the production order , select the operation and choose functions--->>> split.
       Now enter the operation split quantity and execute.
       Now in MD04 you can see two production order.
       In the second production order change the work center in the operation overview as desired and save.
      Regards,
    nandha

  • Use a sequence template multiple times in same project

    I have created a lower-third animated title and saved it as a sequence as it has sound. What I'm confused about it how I import that sequence and use it multiple times in the same project and change the content of the title for each sequence. If I import the sequence and change the title in one instance, it changes the title of all instances. I would like to use the sequence and be able to change each title. I have even tried copying sequences and renaming them but any editing still seems to affect the parent sequence file.
    I know this must be really simple but I'm going round in circles here. Any pointers appreciated.

    Take a look at this thread:
    style sheets for titles?
    I'm not sure if an AFX Live text will bring over the audio, it is not something I have tried.

  • Using Database Sequence in Interface with Union

    Hi Gurus,
    I have Oracle 11gR2 database as my Source and Target.
    When I try to use Database Sequence along with an Interface having set operator like Union , I am getting the following error:
    ODI-1227: Task eSIS_Student_U1_Fact (Export) fails on the source ORACLE connection ESISDW.
    Caused By: java.sql.SQLSyntaxErrorException: ORA-02287: sequence number not allowed here
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:462)
         at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:405)
         at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:931)
         at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:481)
         at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:205)
         at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:548)
         at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:217)
         at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:947)
         at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1283)
         at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1441)
         at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3769)
         at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3823)
         at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1671)
         at oracle.odi.query.JDBCTemplate.executeQuery(JDBCTemplate.java:189)
         at oracle.odi.runtime.agent.execution.sql.SQLDataProvider.readData(SQLDataProvider.java:89)
         at oracle.odi.runtime.agent.execution.sql.SQLDataProvider.readData(SQLDataProvider.java:1)
         at oracle.odi.runtime.agent.execution.DataMovementTaskExecutionHandler.handleTask(DataMovementTaskExecutionHandler.java:70)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.processTask(SnpSessTaskSql.java:2913)
         at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(SnpSessTaskSql.java:2625)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatAttachedTasks(SnpSessStep.java:558)
         at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(SnpSessStep.java:464)
         at com.sunopsis.dwg.dbobj.SnpSession.treatSession(SnpSession.java:2093)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$2.doAction(StartSessRequestProcessor.java:366)
         at oracle.odi.core.persistence.dwgobject.DwgObjectTemplate.execute(DwgObjectTemplate.java:216)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.doProcessStartSessTask(StartSessRequestProcessor.java:300)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor.access$0(StartSessRequestProcessor.java:292)
         at oracle.odi.runtime.agent.processor.impl.StartSessRequestProcessor$StartSessTask.doExecute(StartSessRequestProcessor.java:855)
         at oracle.odi.runtime.agent.processor.task.AgentTask.execute(AgentTask.java:126)
         at oracle.odi.runtime.agent.support.DefaultAgentTaskExecutor$2.run(DefaultAgentTaskExecutor.java:82)
         at java.lang.Thread.run(Thread.java:662)
    Is there any work around to use Database Sequence along with the Interface?
    Regards,
    Sai.

    Hi Arv,
    Thanks for the reply. I tried that also, but still no luck.
    Regards,
    Sai.

  • Using a link to trigger a delete action on form page?

    Hello,
    I have been unable to find an explanation about how to do this in the documentation, these forums or the old interakt forums.
    Is it possible to use a link to trigger the delete action on a form page?
    If so how is it done?
    Thanks in advance!

    Sorry Purple.. I know that there is a delete link that triggers the delete transaction on the form page..
    The question was if anybody knew if I am able to use a link to trigger that delete transaction (on the form page), much like a dynamic list has a link that will trigger the delete transaction on the form page.
    I don't want to use a dynamic list in this case though. :)
    Thanks anyways,
    Drew

  • Use of Sequence in Match-Merge

    Dear All,
    I have a source table containing name and address data. I want to do householding, which means I need to split the data using a match-merge operator. The address data is the merged output, and the name data is the cross-reference output. All well and good so far.
    I want eventually to load the outputs into two levels of a Customer dimension (although for testing right now, I'm just using two ordinary target tables). I know that I will need a 'business key' to link the merged and the cross-reference outputs (as the two dimensional levels). I decide that I shall create a column in both outputs called HH_SEQ, and load this Household Sequence number from a Sequence (which I prepared earlier).
    In Merge Rules, for the Attribute HH_SEQ, I use a Rule Type of Sequence, and select the appropriate Sequence from the drop-down list box. I map this attribute in the MERGE outgroup to the appropriate column in the target merged table, and MM_HH_SEQ in the XREF outgroup to the appropriate column in the target cross-reference table.
    Here is the issue: to get HH_SEQ to be available as a potential Output Attribute in either Merge Output or Cross-Reference Output, it must first be present as a Source Attribute. Which means I had to add it to Input Attributes first. But of course it is not on my input source table! And thus I get a "VLD-1000 Input parameter INGRP1.HH_SEQ does not have input" warning.
    Either I'm just not understanding how to use the Sequence rule type properly (the documentation is pretty atrocious, mind), or there is some technique required here that is just not apparent from several days of experimentation.
    All help gratefully received!
    Regards,
    Donna
    p.s. it does actually compile and run just fine!

    Hi Donna
    I think you are using it in the correct way! I've seen other examples like this from the MM creators.
    The warning can be ignored, I think it is there to highlight a potential issue if it was being used for a scenario other than what you are doing.
    Cheers
    David

  • How to use new sequence when one is reached its maxvalue in PL SQL code

    Hi,
    Currently, I am populating a unique product serial number in a table column using a sequence call to generate new number. For different products, I have different sequences and in my PL SQL code usiing IF..Else block I populate serial number for different products. For one most selling product sequence, we are reaching a Max value in production in a month and to make sure that application will continue to work fine for various end users without getting any error on their screens, I want my code to switch to new sequence automatically. I just need to add another if condition but my problem is how to find accurately when max value is reached for old sequence.
    As call to old sequence can happen in different sessions there could be inconsistency and can end up at error. My new sequence value has to start with AV1000. Please suggest.
    My old sequence look like this :
    SEQUENCE Prd
    INCREMENT BY 1
    START WITH AS1000
    MAXVALUE AS9999
    MINVALUE AS1000
    CYCLE NOCYCLE
    CACHE 2
    Order Yes;
    Edited by: user11695088 on Jul 15, 2009 12:14 AM

    Catch the exception and use your new sequence. But somehow, I'm not liking your alternative approach.
    SQL> set line 300
    SQL> set pages 50000
    SQL> set serveroutput on
    SQL> create sequence testing_seq increment by 1 start with 1 maxvalue 3
      2  /
    Sequence created.
    SQL>
    SQL> create or replace procedure test_seq_proc(p_seq out number)
      2  is
      3  begin
      4     select testing_seq.nextval
      5     into p_seq
      6     from dual;
      7  --
      8     dbms_output.put_line(p_seq);
      9  --
    10  end;
    11  /
    Procedure created.
    SQL> declare v_out number;
      2  begin
      3     test_seq_proc(v_out);
      4  end;
      5  /
    1
    PL/SQL procedure successfully completed.
    SQL> /
    2
    PL/SQL procedure successfully completed.
    SQL> /
    3
    PL/SQL procedure successfully completed.
    SQL> /
    declare v_out number;
    ERROR at line 1:
    ORA-08004: sequence TESTING_SEQ.NEXTVAL exceeds MAXVALUE and cannot be instantiated
    ORA-06512: at "ETL_ADMIN.TEST_SEQ_PROC", line 4
    ORA-06512: at line 3
    SQL>Cheers
    Sarma.

  • Sequence of trigger firing in forms 6i

    hai,
    please reply soon ..
    i need full details about sequence of trigger firing when form initiate,
    query mode,modify mode,delete mode and insert mode in forms 6i .
    regards,
    B.prakash

    please look into the forms 6i online help manuals. There are the trigger flows of all events

Maybe you are looking for

  • No option to make an NTFS partition

    Hello I try to install Windows XP 32bits SP3 with Bootcamp, but when i get to select partition and i select BOOTCAMP FAT32 partition on 32GB my windows just starts to install. i do not get the option to do an format of disc to NTFS. Windows just star

  • Help with regEx or any other idea ....

    my program reads from the keyboard... if there is a character like K the description is printed ... but if there is also a number between 2.....10 and K then the number should be printed too example : reading from keyboard: 4K then 4 + description of

  • Default Email Addresses Picked From Address Book in Groups?

    Many of the records in my address book have more than one email address. When I am sending an email to that individual I start to type their name and am presented with the various choices -- I believe the address I most recently used (or maybe most r

  • Connect mac 10.8.4 to server 2012 print

    Hi I work as a printersupporter. We have a customer who has an office hotel (e.g tenants rent a table or room for a specific time). This enviroment consist of 150 individual users. Theese users has a variation of Windows and Mac. We've setup a printe

  • Depersonalising Data Before loading into DB

    Hi Guys, I need some help on de-Personalizing customer data before loading it into the database using SSIS. So one all the transformation done and finally want to load the data into respective tables , we need to de-personalize it. Also, how it will