2013-05-20 29 views
8

Cố gắng tìm câu trả lời cho câu hỏi này, nhưng không thể.là nó có thể cập nhật một hàng hiện có trong DB, sử dụng liquibase?

Vì vậy, ví dụ tôi có bảng này:

TABLE:

col1 | col2 
123  0 
124  1 

và tôi muốn thay đổi giá trị col2 1 và đây là cách tôi đang cố gắng để làm điều đó:

<changeSet author="myName" id="7799"> 
     <sql> 
     UPDATE TABLENAME; 
     SET COL1='1' WHERE col1='123'; 
     </sql> 
</changeSet> 

Than ôi, nó không hoạt động. Vì vậy, tôi đã tự hỏi nếu nó thậm chí có thể làm điều đó với liquibase? Kể từ đó, hầu hết các thẻ trong tài liệu phải làm với việc tạo bảng, cột thêm, vv

+1

';' Sau 'tablename' là sai. ';' Kết thúc một câu lệnh ** ** chứ không phải một dòng đơn. Và lần sau, vui lòng bao gồm thông báo lỗi. "* không hoạt động *" không hữu ích chút nào (trừ khi lỗi * là * hiển nhiên) –

+1

Xin chào, cảm ơn bạn đã trả lời. Tôi đã thử với; và không có ; -> cùng một kết quả. Bây giờ, tôi ước tôi có một thông báo lỗi - bởi vì sau đó tôi ít nhất sẽ biết những gì đang xảy ra, nhưng ứng dụng thực hiện mà không có bất kỳ lỗi, cảnh báo hoặc ngoại lệ nào. Chỉ là sự thay đổi tôi muốn diễn ra trong cơ sở dữ liệu, không. – user2187935

+0

Bạn chắc chắn rằng changeset đã được thực hiện đối với cơ sở dữ liệu của bạn? Ví dụ: nếu bạn chạy lệnh "changelogSync", điều này sẽ đánh dấu các changesets như được thực hiện trong cơ sở dữ liệu của bạn mà không thực sự chạy các câu lệnh SQL. Sau đó chạy liquibase sẽ không thực hiện một changeset được đánh dấu là chạy trước đó. –

Trả lời

17

Bạn có thể sử dụng cú pháp liquibase sau để cập nhật:

<changeSet author="myname" id="7799"> 
    <update catalogName="dbname" 
      schemaName="public" 
      tableName="TABLENAME"> 
     <column name="COL1" value='1' type="varchar(50)"/> 
     <where>col1='123'</where> 
    </update> 
</changeSet> 

Đối với các tùy chọn khác có sẵn hãy kiểm tra Liquibase Update

+0

Tôi không thấy bất kỳ thẻ '' nào trong tài liệu mà là ''. Tôi không thấy sự tương đương với 'SET COLUMN = Columnnewvalue', tất cả những gì tôi thấy ở đây là' UPDATE TABLENAME, nơi col1 = '123''. Đúng tôi Nếu sai. thanks –

+0

Có lẽ là lỗi đánh máy. Tôi đã cập nhật câu trả lời. –

Các vấn đề liên quan