Added DELETE clause that takes a FROM clause

Makes T-SQL join deletes possible
This commit is contained in:
Niels van Klaveren 2014-08-19 11:01:47 +02:00 committed by Mike Blume
parent 3b74d14e32
commit 0803225582
2 changed files with 12 additions and 1 deletions

View file

@ -174,6 +174,7 @@
:select 50 :select 50
:insert-into 60 :insert-into 60
:update 70 :update 70
:delete 75
:delete-from 80 :delete-from 80
:columns 90 :columns 90
:set 100 :set 100
@ -456,6 +457,9 @@
(defmethod format-clause :delete-from [[_ table] _] (defmethod format-clause :delete-from [[_ table] _]
(str "DELETE FROM " (to-sql table))) (str "DELETE FROM " (to-sql table)))
(defmethod format-clause :delete [[_ table] _]
(str "DELETE " (to-sql table)))
(defn cte->sql (defn cte->sql
[[cte-name query]] [[cte-name query]]
(str (to-sql cte-name) " AS " (to-sql query))) (str (to-sql cte-name) " AS " (to-sql query)))

View file

@ -220,6 +220,13 @@
([table] (delete-from nil table)) ([table] (delete-from nil table))
([m table] (build-clause :delete-from m table))) ([m table] (build-clause :delete-from m table)))
(defmethod build-clause :delete [_ m table]
(assoc m :delete table))
(defn delete
([table] (delete nil table))
([m table] (build-clause :delete m table)))
(defmethod build-clause :with [_ m ctes] (defmethod build-clause :with [_ m ctes]
(assoc m :with ctes)) (assoc m :with ctes))