in reply to SQL WHERE clauses with DBIx::Class, using NOT and IN

Every x NOT IN (a, b...) can be mapped to (x <> a) AND (x <> b) .... In your case it will result in
SELECT * FROM my_table WHERE (id <> 12) AND (id <> 13 AND (id <> 17)
As you are not typing the SQL statements, but generate it (actually using the power of SQL::Abstract), this way can be much easier than implementing NOT IN.