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


DTML method:



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


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




insertMAT  ZSQL method:



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>);





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

Reply via email to