I'm using MS SQL Server 2000 and eGenix mxODBC on W2K3 platform with Zope 2.7.5.

 

DTML method:

 

<dtml-try>

  <dtml-call "insertMAT(mat_id = '18',  mat_name = 'This string is too long for the attribute',)">

<dtml-except>

  <dtml-raise MAT_SQL_FAILURE> <dtml-var error_value></dtml-raise>

</dtml-try>

 

---------

insertMAT  ZSQL method:

 

BEGIN TRANSACTION

insert into mat1 (mat_id)

values (<dtml-sqlvar mat_id type=int>);

 

insert into mat2 (mat_id, mat_name)

values (<dtml-sqlvar mat_id type=int>, <dtml-sqlvar mat_name type=string>);

 

COMMIT TRANSACTION;

 

 

Renders the error:

Error Message:('22001', 8152, '[Microsoft][ODBC SQL Server Driver][SQL Server]String or binary data would be truncated.', 4721)

 

The error occurs in the insert into mat2 where mat_name is too long. But the first insert into mat1 is being written and committed.

 

I understood the entire transaction would be rolled back, either by Zope as a result of the exception or by MS SQL since the two inserts are written as a single transaction. Can you please correct my mistake or my misunderstanding?

 

Thank you,

 

Michael Maslak, Jr.

 

_______________________________________________
Zope-DB mailing list
Zope-DB@zope.org
http://mail.zope.org/mailman/listinfo/zope-db

Reply via email to