4 V4.20 22 Feb 2004 (c) 2000-2004 John Lim (jlim@natsoft.com.my). All rights reserved.
5 Released under both BSD license and Lesser GPL library license.
6 Whenever there is any discrepancy between the two licenses,
7 the BSD license will take precedence.
9 Set tabs to 4 for best viewing.
13 class ADODB2_sybase
extends ADODB_DataDict
{
14 var $databaseType = 'sybase';
16 var $dropIndex = 'DROP INDEX %2$s.%1$s';
18 function MetaType($t,$len=-1,$fieldobj=false)
23 $len = $fieldobj->max_length
;
26 $len = -1; // mysql max_length is not accurate
27 switch (strtoupper($t)) {
30 case 'INTEGER': return 'I';
32 case 'TINYINT': return 'I1';
33 case 'SMALLINT': return 'I2';
34 case 'BIGINT': return 'I8';
37 case 'FLOAT': return 'F';
38 default: return parent
::MetaType($t,$len,$fieldobj);
42 function ActualType($meta)
44 switch(strtoupper($meta)) {
45 case 'C': return 'VARCHAR';
47 case 'X': return 'TEXT';
49 case 'C2': return 'NVARCHAR';
50 case 'X2': return 'NTEXT';
52 case 'B': return 'IMAGE';
54 case 'D': return 'DATETIME';
55 case 'T': return 'DATETIME';
56 case 'L': return 'BIT';
58 case 'I': return 'INT';
59 case 'I1': return 'TINYINT';
60 case 'I2': return 'SMALLINT';
61 case 'I4': return 'INT';
62 case 'I8': return 'BIGINT';
64 case 'F': return 'REAL';
65 case 'N': return 'NUMERIC';
72 function AddColumnSQL($tabname, $flds)
74 $tabname = $this->TableName ($tabname);
76 list($lines,$pkey) = $this->_GenFields($flds);
77 $s = "ALTER TABLE $tabname $this->addCol";
78 foreach($lines as $v) {
81 $s .= implode(',',$f);
86 function AlterColumnSQL($tabname, $flds)
88 $tabname = $this->TableName ($tabname);
90 list($lines,$pkey) = $this->_GenFields($flds);
91 foreach($lines as $v) {
92 $sql[] = "ALTER TABLE $tabname $this->alterCol $v";
98 function DropColumnSQL($tabname, $flds)
100 $tabname = $this->TableName ($tabname);
101 if (!is_array($flds)) $flds = explode(',',$flds);
103 $s = "ALTER TABLE $tabname";
104 foreach($flds as $v) {
105 $f[] = "\n$this->dropCol $v";
107 $s .= implode(',',$f);
112 // return string must begin with space
113 function _CreateSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint)
116 if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault";
117 if ($fautoinc) $suffix .= ' DEFAULT AUTOINCREMENT';
118 if ($fnotnull) $suffix .= ' NOT NULL';
119 else if ($suffix == '') $suffix .= ' NULL';
120 if ($fconstraint) $suffix .= ' '.$fconstraint;
126 [ database_name.[ owner ] . | owner. ] table_name
127 ( { < column_definition >
128 | column_name AS computed_column_expression
129 | < table_constraint > ::= [ CONSTRAINT constraint_name ] }
131 | [ { PRIMARY KEY | UNIQUE } [ ,...n ]
134 [ ON { filegroup | DEFAULT } ]
135 [ TEXTIMAGE_ON { filegroup | DEFAULT } ]
137 < column_definition > ::= { column_name data_type }
138 [ COLLATE < collation_name > ]
139 [ [ DEFAULT constant_expression ]
140 | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
143 [ < column_constraint > ] [ ...n ]
145 < column_constraint > ::= [ CONSTRAINT constraint_name ]
146 { [ NULL | NOT NULL ]
147 | [ { PRIMARY KEY | UNIQUE }
148 [ CLUSTERED | NONCLUSTERED ]
149 [ WITH FILLFACTOR = fillfactor ]
150 [ON {filegroup | DEFAULT} ] ]
153 REFERENCES ref_table [ ( ref_column ) ]
154 [ ON DELETE { CASCADE | NO ACTION } ]
155 [ ON UPDATE { CASCADE | NO ACTION } ]
156 [ NOT FOR REPLICATION ]
158 | CHECK [ NOT FOR REPLICATION ]
159 ( logical_expression )
162 < table_constraint > ::= [ CONSTRAINT constraint_name ]
163 { [ { PRIMARY KEY | UNIQUE }
164 [ CLUSTERED | NONCLUSTERED ]
165 { ( column [ ASC | DESC ] [ ,...n ] ) }
166 [ WITH FILLFACTOR = fillfactor ]
167 [ ON { filegroup | DEFAULT } ]
170 [ ( column [ ,...n ] ) ]
171 REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
172 [ ON DELETE { CASCADE | NO ACTION } ]
173 [ ON UPDATE { CASCADE | NO ACTION } ]
174 [ NOT FOR REPLICATION ]
175 | CHECK [ NOT FOR REPLICATION ]
176 ( search_conditions )
183 CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
184 ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
185 [ WITH < index_option > [ ,...n] ]
187 < index_option > :: =
189 FILLFACTOR = fillfactor |
192 STATISTICS_NORECOMPUTE |
196 function _IndexSQL($idxname, $tabname, $flds, $idxoptions)
200 if ( isset($idxoptions['REPLACE']) ||
isset($idxoptions['DROP']) ) {
201 $sql[] = sprintf ($this->dropIndex
, $idxname, $tabname);
202 if ( isset($idxoptions['DROP']) )
206 if ( empty ($flds) ) {
210 $unique = isset($idxoptions['UNIQUE']) ?
' UNIQUE' : '';
211 $clustered = isset($idxoptions['CLUSTERED']) ?
' CLUSTERED' : '';
213 if ( is_array($flds) )
214 $flds = implode(', ',$flds);
215 $s = 'CREATE' . $unique . $clustered . ' INDEX ' . $idxname . ' ON ' . $tabname . ' (' . $flds . ')';
217 if ( isset($idxoptions[$this->upperName
]) )
218 $s .= $idxoptions[$this->upperName
];