Write

Write allows you to insert a new line in a database table.

Syntax

   Write
   Write [CLASS]
  • [CLASS] is an abbreviation of an opened table. By default, the default table as defined by DefaultFile is used.

Examples

   # Extract of a AINSERT "hand written" method on a class : let's create a header and lines
    Trbegin HEADER [HEAD], LINES [LINE]
    SetInstance [HEAD] with this
    Write [HEAD]
    If fstat=0
      For I=1 to maxtab(this.LINES)
        If this.LINES(I)<>Null
           SetInstance [LINE] with this.LINES(I)
           Write [LINE]
           Break (fstat<>0)
        Endif
      Next I
    Endif
    If fstat=0
      Commit
    Else
      Rollback
    Endif

Description

Write allows you to insert a line in the database.

fstat indicates the result of the operation:

Value Description
0 The write operation succeeded.
1 The table is locked.
3 An attempt to create a duplicate key value was done.

A Write instruction does not modify the current record. If the current record must be the written one, it is necessary to perform a read operation.

Comments

The behavior can be different depending on the database:

  • In Oracle, the lines created by Write are not seen until the transaction ends.
  • In SQL Server, they can be seen directly.

It is not possible to use an abbreviation associated with a join by Link to write a line.

The creation of a line must be done in a transaction.

The written line is locked until the transaction ends.

When several lines must be written on a given table, it is best to use the Writeb instruction that performs faster.

If the table is locked by Lock [ABBREV], the other users cannot insert lines and will get a fstat value equal to 1.

Associated errors

Error code Description
7 Class does not exist (no table opened with the corresponding abbreviation).
27 A write attempt was done on a [Link](../4gl/link.md) abbreviation.
44 No more space to create lines.
65 No more space to create lines.
75 Database error.

See also

File, Readlock, Trbegin, Commit, Rollback, Update, Rewrite, Delete, RewriteByKey, DeleteByKey, Writeb, fstat.