ADOdb

Database Abstraction Layer for PHP

User Tools

Site Tools


v5:database:oracle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
v5:database:oracle [2021/04/30 18:18] – [oci805] explain what the driver does dregadv5:database:oracle [2023/01/25 04:40] (current) – [Auto-Increment Column] mnewnham
Line 14: Line 14:
 == Alternatives == == Alternatives ==
 [[v5:database:pdo#pdo_oci|PDO driver for Oracle]] [[v5:database:pdo#pdo_oci|PDO driver for Oracle]]
 +== See Also ==
 +[[v5:reference:connection:setconnectionparameter#oracle|setConnectionParameter()]]
 </WRAP> </WRAP>
  
Line 87: Line 89:
      
 The default value for ''NLS_DATE_FORMAT'' is ''YYYY-MM-DD''. To include time as well, use ''RRRR-MM-DD HH24:MI:SS'' or set the value to empty to disable this action. The default value for ''NLS_DATE_FORMAT'' is ''YYYY-MM-DD''. To include time as well, use ''RRRR-MM-DD HH24:MI:SS'' or set the value to empty to disable this action.
 +----------------------------------
 ==== Auto-Increment Column ==== ==== Auto-Increment Column ====
 [[v5:dictionary:column_attributes#AUTO or AUTOINCREMENT|Auto-increment]] support for Oracle databases is implemented by creating an on-insert trigger that retrieves a sequence number from a sequence //**SEQ_ + table name **//. This is done by default. [[v5:dictionary:column_attributes#AUTO or AUTOINCREMENT|Auto-increment]] support for Oracle databases is implemented by creating an on-insert trigger that retrieves a sequence number from a sequence //**SEQ_ + table name **//. This is done by default.
  
 +If you have long table names then the generated trigger name can exceed the maximum allowed length. To prevent this, use the class variable ''useCompactAutoIncrements''. This will change the trigger name to a generated CRC value of the name. 
 +=== Example using the table name "customer_delivery_address" ===
 +By default, the trigger name would be SEQ_CUSTOMER_DELIVERY_ADDRESS which exceeds the 16 character name for sequences. By setting ''$db->useCompactAutoIncrements=true'', the sequence name is changed to ''SEQ_401703491''
 +
 +=== Accessing the trigger in your code ===
 +<code php>
 +
 +$db->useCompactAutoIncrements=true;
 +
 +$tab = 'customer_delivery_address';
 +$tab = sprintf('SEQ_%u',crc32(strtolower($tab)));
 +
 +print $tab; //prints SEQ_401703491
 +
 +</code>
 +
 +-----------------------------------
 +==== Session Mode ====
 +
 +From ADOdb **V5.23.0**, You can use external ''(OCI_CRED_EXT)'' or privileged (''OCI_SYSOPER or OCI_SYSDBA'') sessions via the [[v5:reference:connection:setconnectionparameter|setConnectionParameter()]] method, **prior** to establishing a connection.
 +
 +<code php>
 +
 +$db = ADONewConnection('oci8');
 +$db->setConnectionParameter('session_mode', OCI_CRED_EXT);
 +$db->connect(false, 'scott', 'tiger', 'myTNS');
 +
 +</code>
 +
 +
 +----------------------------------------------
 ====== oci8po ====== ====== oci8po ======
 <WRAP right box round 300px> <WRAP right box round 300px>
v5/database/oracle.1619799522.txt.gz · Last modified: 2021/04/30 18:18 by dregad