2016-02-05 68 views
0

我需要从表中删除一行,其中没有主键。不要责怪我,Hibernate创造它们。我无法使用OID或CTID。幸运的是,我有整行数据,我使用它。删除一个类型转换行

这工作:

DELETE FROM public.item WHERE public.item='(4,A015GV,444,s4)'::item; 

这也适用于:

DELETE FROM public.item WHERE item='(5,A015GH,555,s5)'::public.item; 

但是,如果模式被提及的3倍,这是工作。为什么?

DELETE FROM public.item WHERE public.item='(5,A015GH,555,s5)'::public.item; 
+2

它不是架构中提到的3倍,在你别名列,但你没有'public'表的别名。尝试'删除从public.item thealias WHERE thealias.item ='(5,A015GH,555,s5)':: public.item;' – JustMe

+3

@Izzy是第一个真正工作的案例? “DELETE FROM public.item WHERE public.item ='(4,A015GV,444,s4)':: item;” –

+0

我时不时工作。不是全部。 –

回答

0

只需添加文本::

DELETE FROM public.item WHERE item::text='(5,A015GH,555,s5)'; 
+0

它工作,但为什么 DELETE FROM public.item WHERE public.item :: text ='(5,A015GH,555,s5)'; 或 DELETE FROM public.item WHERE(public.item):: text ='(5,A015GH,555,s5)'; 不? –

+0

用(item):: text替换(public.item):: text –