PostgreSQL में मैं कुछ परीक्षण डेटा के साथ एक तालिका बना सकता हूं, और फिर एक लेनदेन में इसे एक अलग प्रकार के एक नए कॉलम में माइग्रेट कर सकता हूं, जिसके परिणामस्वरूप एक टेबल-फिर से लिखना होगा COMMIT
,
CREATE TABLE foo ( a int );
INSERT INTO foo VALUES (1),(2),(3);
के बाद,
BEGIN;
ALTER TABLE foo ADD COLUMN b varchar;
UPDATE foo SET b = CAST(a AS varchar);
ALTER TABLE foo DROP COLUMN a;
COMMIT;
हालाँकि, Microsoft की SQL सर्वर में एक ही बात एक त्रुटि उत्पन्न होती है। इस कार्यशील db फिडेल की तुलना करें , जहाँ ADD
(कॉलम) कमांड लेनदेन के बाहर है,
-- txn1
BEGIN TRANSACTION;
ALTER TABLE foo ADD b varchar;
COMMIT;
-- txn2
BEGIN TRANSACTION;
UPDATE foo SET b = CAST( a AS varchar );
ALTER TABLE foo DROP COLUMN a;
COMMIT;
इस डीबी फ़िडल जो काम नहीं करता है,
-- txn1
BEGIN TRANSACTION;
ALTER TABLE foo ADD b varchar;
UPDATE foo SET b = CAST( a AS varchar );
ALTER TABLE foo DROP COLUMN a;
COMMIT;
लेकिन त्रुटियों के बजाय
Msg 207 Level 16 State 1 Line 2
Invalid column name 'b'.
क्या डीडीएल के संबंध में, इस सौदे को दिखाई देने के लिए कुछ भी है, पोस्टग्रेक्यूएल की तरह व्यवहार करें?