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 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.