René Nyffenegger's collection of things on the web
René Nyffenegger on Oracle - Most wanted - Feedback -
 

Violating an index [DAO]

sub violate_index()

  dim mdb_file_name as string 
  mdb_file_name = "c:\\temp\\violate_index.mdb"

  kill_file_if_exists(mdb_file_name)

  dim db as dao.database
  set db  = dao.createDatabase(mdb_file_name, dbLangGeneral, 0)

  ' Creating the table     {
  
  dim table_def   as dao.tableDef
  set table_def = db.createTableDef("aTable")


  ' Adding field ' {
  dim table_field as dao.field

  ' First column
  set table_field = table_def.createField("anUnindexedField", dbLong)
  table_def.Fields.append table_field

  ' Second column
  set table_field = table_def.createField("anIndexedField", dbLong)
  table_def.Fields.append table_field
  ' }

  db.tableDefs.append table_def

  ' }

  ' The index      {
  dim ix          as dao.index

  set ix        = table_def.createIndex("ix_unique")
  ix.fields.append ix.createField("anIndexedField")
  ix.unique     = true
  ix.primary    = false ' default ?
  table_def.indexes.append ix

  ' }

  set ix        = nothing
  set table_def = nothing

  ' { inserting

  dim rs as dao.recordSet
  set rs = db.openRecordSet("aTable", dbOpentable)

  rs.addNew
     rs("anUnindexedField") = 1
     rs("anIndexedField"  ) = 1
  rs.update

  rs.addNew
     rs("anUnindexedField") = 2
     rs("anIndexedField"  ) = 2
  rs.update

  rs.addNew
     rs("anUnindexedField") = 3
     rs("anIndexedField"  ) = 3
  rs.update

  rs.addNew
     rs("anUnindexedField") = 3
     rs("anIndexedField"  ) = 3
  rs.update

  ' }


end sub

private sub kill_file_if_exists(file_name as string)

  dim fso       as fileSystemObject 

  set fso   = new fileSystemObject

  if fso.fileExists(file_name) then
     fso.deletefile(file_name)
  end if

end sub